On Sunday, August 16, 2009, Nicholas Efremov-Kendall
<[email protected]> wrote:
> Hi all,
> I'm having some issues with my code, and I'm not sure where the problem lies. 
> This code worked at one point, and I've been staring at it for too long to 
> see the problem. Two firebug errors fire when I click on one of the POI's 
> "feature.geometry is undefined" and "popup is undefined". Any suggestions?
>
>
> var map, layer, selectedFeature, selectControl, selectedFeature, 
> sites;function onPopupClose(evt) {            
> selectControl.unselect(selectedFeature);        }
>
> function onFeatureSelect(feature) {            selectedFeature = feature;

"featureselected" listeners do not receive a feature but an object
with a feature property referencing the selected feature. So your code
should look like this:

function onFeatureSelect(evt) {
    selectedFeature = evt.feature;
    ...
}

cheers,




> popup = new OpenLayers.Popup.FramedCloud("chicken",                           
>            feature.geometry.getBounds().getCenterLonLat(),
>                                      null,                                    
>  "<div style='font-size:.8em'>Site_ID: " + feature.attributes.title +"<hr 
> />Locality: " + feature.attributes.title+"<br/>Description: " 
> +feature.attributes+"<br/> Feature ID: "+feature.id+"<br/>Feature 
> Type:"+feature.attributes.NEWSITE_ +"</div>",
>                                      null, true, onPopupClose);            
> feature.popup = popup;            map.addPopup(popup);             }
>                 function onFeatureUnselect(feature) {            
> map.removePopup(feature.popup);            feature.popup.destroy();           
>  feature.popup = null;
>         }
>               function init() {                       map = new 
> OpenLayers.Map ("map",
>                                       {                                       
> controls:[                                      new 
> OpenLayers.Control.Navigation(),
>                                       new OpenLayers.Control.PanZoomBar(),    
>                                 new OpenLayers.Control.LayerSwitcher(),
>                                       new OpenLayers.Control.Attribution()],  
>                         sphericalMercator: true,                              
>   maxExtent: new 
> OpenLayers.Bounds(-20037508.34,-20037508.34,20037508.34,20037508.34),
>                               maxResolution: 156543.0399,                     
>         numZoomLevels: 19,                              units: 'm',
>                               projection: new 
> OpenLayers.Projection("EPSG:900913"),                           
> displayProjection: new OpenLayers.Projection("EPSG:4326"),
>                                       }                       );              
>                                 
>                       var     sites = new OpenLayers.Layer.GML (              
>         "Archaeological Sites", "data/siteswatr.gml",
>                       {                       style: {pointRadius: 2.5},      
>                 projection: new OpenLayers.Projection("EPSG:4326"),
>                       format: OpenLayers.Format.GML                   }       
>                 );
>               map.addLayer(sites);
>               sites.events.on({                       'featureselected': 
> onFeatureSelect,
>               'featureunselected': onFeatureUnselect                          
> });
>
>             selectControl = new OpenLayers.Control.SelectFeature(sites,       
>          {clickout: true,                               toggle: false,        
>                   hover: false,
>                               }            );            
> map.addControl(selectControl);
>             selectControl.activate();
>                       if( ! map.getCenter() ){                        
> sites.events.register('loadend', sites, 
> function(){map.zoomToExtent(sites.getDataExtent())});
>                       map.setCenter(null, null);                      };}
> --
> Nicholas Efremov-Kendall
> Fulbright Student 2009-2010, Ukraine
> [email protected]
> c/o Halyna Yerko
> Balzaka 92a, Kv 27
> 02232
> Kyiv, Ukraine
> (mob) +380963576524
>
>

-- 
Eric Lemoine

Camptocamp France SAS
Savoie Technolac, BP 352
73377 Le Bourget du Lac, Cedex

Tel : 00 33 4 79 44 44 96
Mail : [email protected]
http://www.camptocamp.com
_______________________________________________
Users mailing list
[email protected]
http://openlayers.org/mailman/listinfo/users

Reply via email to