我只是尝试在svg map
中的javascript
上放置一个城市的点。
说明:
是)我有的:
SVG中的法国地图(128x128px):
WGS84中的坐标,例如:
我想说一下巴黎市区。
我在该网站上搜索,发现了这段代码,但没有任何解释,所以我不知道什么是mapLonLeft
,mapLatBottom
和mapLatBottomDegree
。
function convertGeoToPixel(latitude, longitude ,
mapWidth , // in pixels
mapHeight , // in pixels
mapLonLeft , // in degrees
mapLonDelta , // in degrees (mapLonRight - mapLonLeft);
mapLatBottom , // in degrees
mapLatBottomDegree) // in Radians
{
var x = (longitude - mapLonLeft) * (mapWidth / mapLonDelta);
latitude = latitude * Math.PI / 180;
var worldMapWidth = ((mapWidth / mapLonDelta) * 360) / (2 * Math.PI);
var mapOffsetY = (worldMapWidth / 2 * Math.log((1 + Math.sin(mapLatBottomDegree)) / (1 - Math.sin(mapLatBottomDegree))));
var y = mapHeight - ((worldMapWidth / 2 * Math.log((1 + Math.sin(latitude)) / (1 - Math.sin(latitude)))) - mapOffsetY);
return { "x": x , "y": y};
}
最佳答案
以下是每个convertGeoToPixel
参数的含义:latitude
-您要在地图上绘制的点的纬度。longitude
-您要在地图上绘制的点的经度。mapWidth
-地图的宽度(以像素为单位)mapHeight
-地图的高度(以像素为单位)mapLonLeft
-地图最左侧的真实经度mapLonDelta
-地图的“宽度”,以经度为单位mapLatBottom
-地图底部的纬度(真实世界)mapLatBottomDegree
-mapLatBottom
转换为弧度
因此,查看您的地图:
您必须检查其左侧的经度,右侧的经度和底部的纬度。
看起来您设置这些值似乎相当准确:
latitude = 48.8667
longitude = 2.33333
mapWidth = mapHeight = 128
mapLonLeft = -5
mapLonDelta = 14
mapLatBottom = 42
mapLatBottomDegree = mapLatBottom * pi/180
但是,这些值是非常粗略的估计,如果可以,请尝试找到地图边缘的经度/纬度的确切值。
该功能是否按预期执行是另一回事...