Bing地图从Pixel位置转换为Latitude Longitude

时间:2013-10-27 17:54:25

标签: javascript coordinates bing-maps bing-api

所以这是交易,我想在地图的左上角有一个Pin。因此我想每次我“穿越”地图以获取TopLeft角落的绳索并拖动销钉。 使用以下参考我创建了数学。但它似乎没有用。

MSDN Bing Map Scale Reference

如代码所示,我有一个固定的lat和lon,所以如果我先生成pixelX,Y然后尝试再次获得lat lon,我就知道它成功了!但这是控制台输出。

x:520755.97951431107,y:3.820808909668405

150,54.56342799999999

这是地图元素的html:<div id="BingMap" class="map"></div> 还有其他元素。 任何想法,为什么它错了? 谢谢!。

var latitude = 54.563428;
var longitude = -1.212623;
var sinLatitude = Math.sin(latitude * Math.PI / 180);
var pixelX = ((longitude + 180) / 360) * 256 * Math.pow(2, map.getZoom());
var pixelY = (0.5 - Math.log((1 + sinLatitude) / (1 - sinLatitude)) / (4 * Math.PI)) * map.getZoom();
console.log("x:" + pixelX + ", y:" + pixelY);

var mapSize = map.getZoom();
var x = (Clip(pixelX, 0, mapSize - 1) / mapSize) - 0.5;
var y = 0.5 - (Clip(pixelY, 0, mapSize - 1) / mapSize);

mainPushPinDockLatitude = 90 - 360 * Math.atan(Math.exp(-y * 2 * Math.PI)) / Math.PI;
mainPushPinDockLongitude = 360 * x;

console.log(mainPushPinDockLongitude + "," + mainPushPinDockLatitude);

1 个答案:

答案 0 :(得分:1)

如果您总是希望地图左上角有一个图钉,为什么不将它作为标准HTML图像叠加在地图的顶部。这将为您省去必须进行任何瓦片数学运算的麻烦。例如:

<div style="position:relative;">
<div id="MyMap" style="position:relative;width:600px;height:400px;"></div>
<img src="mypin.png" style="position:absolute;top:50px;left:10px;></div>