Bing地图从像素位置转换为纬度经度

问题描述:

所以这里是交易,我希望Pin总是在地图的左上角。所以我想每次我都在地图上“旅行”,以获得TopLeft角落的绳索并将其拖动。 使用以下参考我创建了数学。但它似乎没有工作。Bing地图从像素位置转换为纬度经度

MSDN Bing Map Scale Reference

正如代码暗示我有,所以如果我第一次产生了pixelX,Y,然后设法得到纬度经度再次我会知道它是成功的一个固定的纬度和经度!不过这是控制台输出。

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); 

如果您总是希望在地图左上角有一个图钉,为什么不把它作为标准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>