[OpenLayers-Trac] [OpenLayers] #3251: OpenLayers.Layer.Vector.addFeatures() causes Chrome to reload page

OpenLayers trac-20090302 at openlayers.org
Thu Apr 7 10:24:54 EDT 2011


#3251: OpenLayers.Layer.Vector.addFeatures() causes Chrome to reload page
--------------------------------+-------------------------------------------
 Reporter:  kkelley4va          |       Owner:  crschmidt   
     Type:  feature             |      Status:  new         
 Priority:  major               |   Milestone:  2.10 Release
Component:  Layer.Vector        |     Version:  2.10        
 Keywords:  Chrome addFeatures  |       State:              
--------------------------------+-------------------------------------------
 '''Background'''
 We are using OpenLayers on top of the Google map api.  This is only an
 issue on Chrome (10.0.648.204) and not IE or FF.  We also have dojo 1.5
 included in our application to generate menus and other controls.

 Adding a marker on top of a google map works fine.  However, once the page
 completes loading, it is requested a second time.  I noticed because I had
 some breakpoints set on code used to render some dynamic fields.  Before
 the map/marker is rendered the breakpoint is hit.  After the page
 completes loading it is hit again.

 If I comment out "map.vectorLayer.addFeatures([feature]);" from the code
 below, the page doesn't get requested twice, but of course the marker
 isn't created.

 {{{
 function createMarker(input)
 {
         if(input.longitude==undefined || input.latitude==undefined &&
 input.address!=undefined)
         {
                 createAddressMarker(input);
                 return null;
         }

         if(input.longitude==undefined || input.latitude==undefined)
                 return null;

         var iconURL = null;
         var iconW = (input.options.iconW!=undefined) ? input.options.iconW
 : 20;
         var iconH = (input.options.iconH!=undefined) ? input.options.iconH
 : 20;

         if(input.options.icon!=undefined)
                 iconURL = input.options.icon;
         else
                 iconURL = DEFAULT_MAP_ICON;

         input.options.icon = iconURL; //re-assigned
         input.options.iconW = iconW;
         input.options.iconH = iconH;

         var map = TheMaps[input.mapid];
         map.vectorLayer = new OpenLayers.Layer.Vector("Markers",
 {displayInLayerSwitcher: false, reproject: true});
         map.vectorLayer.events.includeXY = true;
         map.vectorLayer.display(true);
         map.vectorLayer.projection = map.displayProjection;

         map.vectorLayer.preFeatureInsert = function(feature)
         {
                 //we always with with EPSG:4326, need to convert it to map
 projection
                 feature.geometry.transform(map.displayProjection,
 map.projection);
         }
         map.addLayer(map.vectorLayer);

         map.selectControl = new
 OpenLayers.Control.SelectFeature(map.vectorLayer, {clickout: true});

         map.vectorLayer.events.on({"featureselected": onFeatureSelect,
 "featureunselected": onFeatureUnselect});
         map.addControl(map.selectControl);
         map.selectControl.activate();

         var feature = new OpenLayers.Feature.Vector(new
 OpenLayers.Geometry.Point(input.longitude, input.latitude), null,
         {externalGraphic: iconURL, graphicHeight: iconH, graphicWidth:
 iconW});

         feature.input = input;
         feature.id = input.id;

         if(input.checked==true)
                 feature.style.display = 'block';
         else
                 feature.style.display = 'none';

         map.vectorLayer.addFeatures([feature]);
         map.vectorLayer.redraw();

         return [feature];
 }
 }}}

-- 
Ticket URL: <http://trac.openlayers.org/ticket/3251>
OpenLayers <http://openlayers.org/>
A free AJAX map viewer


More information about the Trac mailing list