OpenLayers移动.弹出最多10像素,左侧15像素

Move OpenLayers.Popup up to 10 pixel and left 15 pixel?

本文关键字:10像素 左侧 15像素 移动 OpenLayers      更新时间:2023-09-26

下午好,我在地图上有一个弹出窗口,我只想移动10像素高,15像素到左边,问题是,当你改变它的位置在纬度和经度,是在另一个位置完全,当我缩放远离标记,我想要的只是移动到新的位置,不管缩放,总是保持在标记之上。

var size   = new OpenLayers.Size(21,25);
var offset = new OpenLayers.Pixel(-(size.w/2), -size.h);
var icon   = new OpenLayers.Icon('/openlayers/img/marker.png',size,offset);
var lonlat = new OpenLayers.LonLat(long,lat);
var proj_1 = new OpenLayers.Projection("EPSG:4326");
var proj_2 = new OpenLayers.Projection("EPSG:900913");
var EPSG   = lonlat.transform(proj_1,proj_2);
var marker = new OpenLayers.Marker(EPSG, icon);
markers.addMarker(marker);
marker.events.register("click", marker, function(e){ // on click popup
    var popup = new OpenLayers.Popup.FramedCloud(id,
                marker.lonlat,
                new OpenLayers.Size(200,200),
                '<div class="popup">info example</div>',
                null,true);
    map.addPopup(popup);
});
var labelepopup = new OpenLayers.Popup(null,
    EPSG,
    new OpenLayers.Size(37,13),
    '<p style="font-size: 8.5px;">always info</p>'
);
map.addPopup(labelepopup);

标记上的弹出标签弹出出现,所有我想要的是容纳标记上方的标签弹出

您可以使用getPixelFromLonLat map函数从纬度和经度获取精确像素,然后使用返回的Pixel对象添加或删除所需像素。然后,您可以使用moveTo弹出函数更改弹出位置,该函数需要Pixel对象。

像这样:

var pixel = map.getPixelFromLonLat(popup.lonlat); //or use another OpenLayers.LonLat object
pixel.x += DESIRED_X_AMOUNT;
pixel.y += DESIRED_Y_AMOUNT;
popup.moveTo(pixel);