3

下面的代码是计算一个位置的像素和瓦片坐标。使用 256 像素的瓷砖效果很好。但是,如果您使用 512px 平铺世界和像素坐标可以正常工作,但平铺坐标不会改变,这是不可能的。

256px 平铺大小

Chicago, IL
LatLng: (41.85, -87.64999999999998)
Zoom level: 15
World Coordinate: (65.67111111111113, 95.17492654697409)
Pixel Coordinate: (2151910, 3118691)
Tile Coordinate: (8405, 12182) <-------- SAME ----------------

512px 平铺尺寸

Chicago, IL
LatLng: (41.85, -87.64999999999998)
Zoom level: 15
World Coordinate: (131.34222222222226, 190.34985309394818)
Pixel Coordinate: (4303821, 6237383)
Tile Coordinate: (8405, 12182) <--------- SAME ---------------

这是计算瓷砖坐标的代码

var tileCoordinate = new google.maps.Point(
      Math.floor(worldCoordinate.x * scale / TILE_SIZE),
      Math.floor(worldCoordinate.y * scale / TILE_SIZE));

我试图修改它,但我相信如果坐标靠近瓷砖的边缘,它可能会给出错误的瓷砖坐标(比如旁边的瓷砖)。可能是因为太多的分裂和四舍五入。

var tileCoordinate = new google.maps.Point(
      Math.floor(worldCoordinate.x * scale / (TILE_SIZE * (TILE_SIZE / 256))),
      Math.floor(worldCoordinate.y * scale / (TILE_SIZE * (TILE_SIZE / 256))));

有人遇到过这个问题并知道解决方案吗?

https://developers.google.com/maps/documentation/javascript/examples/map-coordinates

https://jsfiddle.net/ergec/yyat3gux/

4

0 回答 0