Как переместить маркер в слое OpenLayers.Layer.Markers? - PullRequest
3 голосов
/ 14 февраля 2012

Как программно переместить существующий маркер на слой OpenLayers.Layer.Markers?Кажется, я не могу найти правильный путь.

Это поддерживается вообще?Или мне нужно использовать слой Vector?

Функция marker.moveTo() у меня не работает, у меня координата в широте / долготе.

Ответы [ 3 ]

11 голосов
/ 15 марта 2013

если у вас есть lon / lat для новой точки, маркер можно переместить как:

var newLonLat = new OpenLayers.LonLat(lon, lat);
var newPx = map.getLayerPxFromLonLat(newLonLat);
myMarker.moveTo(newPx);
4 голосов
/ 15 февраля 2012

marker.moveTo() не является "официальным" методом APIM.Он используется внутри других методов в OpenLayers, и вам не рекомендуется использовать методы, которые не помечены как «APIMethod».

Разве удаление и добавление маркера на новой позиции не удовлетворяет вашим требованиям?Для этого есть removeMarker() и addMarker() APIMethods.

Если нет, я бы рассмотрел использование векторного слоя, так как он намного более гибок в плане возможностей рендеринга и манипулирования.

1 голос
/ 09 января 2014

Это не полностью рабочий пример, демонстрирующий перемещение маркера при событии щелчка

coffeescript:

projection_4326 = new OpenLayers.Projection("EPSG:4326") #Transform from WGS 1984
projection_900913 = new OpenLayers.Projection("EPSG:900913") # Spherical Mercator Projection
markers = new OpenLayers.Layer.Markers( "Markers")
marker = new OpenLayers.Marker(new OpenLayers.LonLat(0,0).transform(projection_4326, projection_900913), icon)
markers.addMarker(marker)
map = new OpenLayers.Map(...init...stuff)
map.addLayers([markers])
map.events.register "click", map, (e) ->
            opx = map.getLayerPxFromViewPortPx(e.xy)
            lonLat = map.getLonLatFromPixel(e.xy)
            # now, if your coordinates are in EPSG:4326 you would have to convert the lonLat here
            #new_position = marker.lonlat.transform(projection_4326, projection_900913)
            marker.map = map
            marker.moveTo(opx) #or new_position
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...