否定墨卡托投影

Negate Mercator Projection

我使用 Google 地图通过图像地图类型将图像用作地图。这张地图来自电脑游戏,因此是虚构的。但它包含街道和建筑物。我通过添加用作多边形路径点的圆圈来创建边界这些建筑物的可能性。要编辑多边形,路径点将保持可见并显示为可拖动的圆圈。

问题是这些圆圈向北或向南变得越来越大,即使它们具有相同的半径。

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

我已经尝试通过创建自己的投影来解决这个问题。但这并不像预期的那样有效。

我试过以下投影:

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 API 根据此 documentation 使用的投影。 Google 的 Public 问题跟踪器中已经提出了不使用墨卡托投影的功能请求。

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

为了表达您的兴趣,请给问题加注星标以获取更新并发表评论以获取更多信息。