[英]openlayers marker moveTo only accurate at a specific zoom level
我一直在努力讓用戶在不拖動的情況下移動標記。 基本上,用戶點擊標記並打開信息窗口氣泡。 泡泡是指向地圖上設置點擊事件的javascript函數的鏈接。 當用戶點擊地圖上的某個位置時,應該將標記移動到點擊的點。
在我的地圖中,我有18個縮放級別。 在縮放級別15,此過程完美地運行。 如果我在單擊一次后放大,標記仍會移動到我單擊的位置。 但是,如果我刷新並在縮放級別16重新開始並嘗試單擊某處,標記將移動到更高,更左側的位置。 在更高的縮放級別重復此過程,標記會在地圖上向上和向左移動(距離)。
在縮放級別低於15的情況下執行上述操作也可以正常工作。
這是代碼的片段:
lmLayer = new OpenLayers.Layer.Markers("Landmark Creation");
map.addLayer(lmLayer);
var marker = landmark['landmark_1234'];// this just pulls the marker out of storage
map.events.register("click", lmLayer, function(evt){
var pixel = new OpenLayers.Pixel(evt.clientX,evt.clientY);
marker.moveTo(pixel);
OpenLayers.Event.stop(evt);
});
我有控制台注銷了clientX和clientY點擊,他們確實從瀏覽器的左上邊緣注冊了正確的x / y坐標。 但似乎OL在15以上的縮放級別上錯誤地計算了move。
有任何想法嗎?
在等待錯誤糾正時稍微解決一下
lmLayer = new OpenLayers.Layer.Markers("Landmark Creation");
map.addLayer(lmLayer);
var marker = landmark['landmark_1234'];
map.events.register("click", lmLayer, function(evt){
var pixel = new OpenLayers.Pixel(evt.clientX,evt.clientY);
marker.lonlat = pixel;
marker.moveTo(pixel);
// workaround
marker.draw();
lmLayer.redraw();
OpenLayers.Event.stop(evt);
});
干杯,J。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.