我只是尝试在svg map中的javascript上放置一个城市的点。

说明:

是)我有的:

SVG中的法国地图(128x128px):



WGS84中的坐标,例如:



我想说一下巴黎市区。
我在该网站上搜索,发现了这段代码,但没有任何解释,所以我不知道什么是mapLonLeftmapLatBottommapLatBottomDegree

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转换为弧度


因此,查看您的地图:



您必须检查其左侧的经度,右侧的经度和底部的纬度。

javascript - 在JS的SVG map 上放置城市点-LMLPHP

看起来您设置这些值似乎相当准确:

latitude = 48.8667
longitude = 2.33333
mapWidth = mapHeight = 128
mapLonLeft = -5
mapLonDelta = 14
mapLatBottom = 42
mapLatBottomDegree = mapLatBottom * pi/180


但是,这些值是非常粗略的估计,如果可以,请尝试找到地图边缘的经度/纬度的确切值。

该功能是否按预期执行是另一回事...

07-26 05:43