墨卡托投影否定

问题描述 投票:0回答:1

我使用Google Maps通过Image Map Types将图像用作地图。该地图来自计算机游戏,因此是虚构的。但它包含街道和建筑物。通过添加用作多边形路径点的圆,我创造了对这些建筑物进行边界的可能性。要编辑多边形,路径点仍可拖动为圆形。

问题是,即使它们具有相同的半径,这些圆在北方或南方也会越来越大。

我知道这是因为Google Maps假定它是一个球体,因此使用墨卡托投影来计算圆的半径。

我已经尝试通过创建自己的投影来解决此问题。但这不能按需工作。

我尝试了以下投影:

fromLatLngToPoint: function (latLng, opt_point) {
    let point               = opt_point || new google.maps.Point(0, 0),
        TILE_SIZE           = 256,
        origin              = new google.maps.Point(TILE_SIZE / 2, TILE_SIZE / 2),
        pixelsPerLonDegree_ = TILE_SIZE / 360,
        pixelsPerLatDegree_ = TILE_SIZE / 180

    point.x = origin.x + latLng.lng() * pixelsPerLonDegree_
    point.y = origin.y + latLng.lat() * pixelsPerLatDegree_

    return point
},

fromPointToLatLng: function (point) {
    let TILE_SIZE           = 256,
        origin              = new google.maps.Point(TILE_SIZE / 2, TILE_SIZE / 2),
        pixelsPerLonDegree_ = TILE_SIZE / 360,
        pixelsPerLatDegree_ = TILE_SIZE / 180,
        lng                 = (point.x - origin.x) / pixelsPerLonDegree_,
        lat                 = (point.y - origin.y) / pixelsPerLatDegree_

    return new google.maps.LatLng(lat, lng)
},

[通过此投影,地图(0,0)中间的圆圈显示为蛋,并且该圆圈越向北或向南越宽。

我根本无法弄清楚圆为什么会改变形状。

javascript google-maps google-maps-api-3 map-projections
1个回答
1
投票

[目前尚无解决方法可以取消Mercator Projection,因为Maps JavaScript API根据此documentation使用了此方法。 Google的“公共问题跟踪器”已经提出了一项功能请求,要求不使用墨卡托投影。

您可以在这里检查:https://issuetracker.google.com/111576221

为了表达您的兴趣,请为问题加注星标以获取更新,并留下评论以获取其他信息。

© www.soinside.com 2019 - 2024. All rights reserved.