[OpenLayers-Users] openlayer markers located at the wrong place

maven apache apachemaven0 at gmail.com
Fri May 31 01:33:37 PDT 2013


Mario Danelli:

Thanks for your attention and the codes.

It seem that the `OpenLayers.Marker` have no native support methods like
`setPosition()` or something else to update its position.

Since in my opinion, destroy-create-destroy.. will be a performance consuming
problem, that is why I keep one object of  `Marker` to reuse it.

I think it is a pity.

APIs like this kinds should be considered.

And I hope the development team of OL will notice this post. :)

And thank you anyway. :)


2013/5/31 Mario Danelli <mario.danelli at gmail.com>

> Dear Maven,
>
> > As you can see, once I click on the map, I want the marker's position
> updated and re-located.
>
> As you can see, from the following link too
>
>
> http://stackoverflow.com/questions/9278174/how-to-move-a-marker-in-an-openlayers-layer-markers-layer
>
> It seems that the "moveTo" -- is not "official" APIMethod -- or in any case
> there are some problems with it.
>
> So I tried removing and adding a new marker at any click on map.
> Below the JS code, that runs as expected, I tried in your example.
> As you can see I changed the code of "updateMaker" function.
>
> ---------> BEGIN
>
> $(window).load(function() {
>         var map = new OpenLayers.Map("map");
>         map.addControl(new OpenLayers.Control.MousePosition());
>         var osm = new OpenLayers.Layer.OSM();
>         map.addLayer(osm);
>         // Set view to zoom maximum map extent
>         map.zoomToMaxExtent();
>
>                 var markers = new OpenLayers.Layer.Markers("Markers");
>                 map.addLayer(markers);
>
>         myMarker = new OpenLayers.Marker(new OpenLayers.LonLat(0,0));
>                 markers.addMarker(myMarker);
>
>                 map.events.register("click", map, function(evt) {
>                         var pos = map.getLonLatFromPixel(evt.xy);
>                         updateMaker(myMarker, pos);
>                 });
>
>                 function updateMaker(myMarkerIn, pos) {
>
> //myMarker.moveTo(myMarker.map.getPixelFromLonLat(pos));
>                    markers.removeMarker(myMarkerIn);
>            myMarkerIn.destroy();
>            myMarker = new OpenLayers.Marker(pos);
>                    markers.addMarker(myMarker);
>                 }
>         });
>
> <--------- END
>
> I hope it can be useful.
>
> Regards
>
> Mario Danelli
>
> _______________________________________________
> Users mailing list
> Users at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/openlayers-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/openlayers-users/attachments/20130531/df548275/attachment.html>


More information about the Users mailing list