我使用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)中间的圆圈显示为蛋,并且该圆圈越向北或向南越宽。
我根本无法弄清楚圆为什么会改变形状。
[目前尚无解决方法可以取消Mercator Projection,因为Maps JavaScript API根据此documentation使用了此方法。 Google的“公共问题跟踪器”已经提出了一项功能请求,要求不使用墨卡托投影。
您可以在这里检查:https://issuetracker.google.com/111576221
为了表达您的兴趣,请为问题加注星标以获取更新,并留下评论以获取其他信息。