让我们从参考资料(https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Popup.html#open)中考虑以下代码:
view.on("click", function(evt){
view.popup.open({
location: evt.mapPoint, // location of the click on the view
title: "Some title",
});
这可行。但是如何在由预定义的lng,lat coords指定的点处打开弹出窗口?
第一次尝试:
var point = new Point({latitude:lat,longitude:lng});
view.popup.open({
location: point,
title: "Some title"
});
这是行不通的。原因是当前创建的点已从地图视图断开。有没有一种方法可以通过指定的(lng,lat)接收当前视图的屏幕坐标(x,y)?在Google Maps API中,有诸如latLngToDivPixel,latLngToDivPoint之类的方法,那么argis为该任务提供了什么?
看来您遇到了SpatialReference问题。由于您是通过lat / lng创建点的,因此它不在WebMercator中,因此,当您将其添加到地图中时,它将到达错误的位置。这是给您的固定代码:
// this works, but needs to be in webmercator:
// var point = new Point({x:-9035831.315416021, y:3095345.196351918});
// as an alternative you can translate to webmercator on the fly:
var point = webMercatorUtils.geographicToWebMercator(new Point({latitude:28.526622,longitude:-81.914063}));
view.popup.open({
location: point,
title: "Some title"
});
这是上面的示例代码。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句