google maps api tile坐标计算错误

时间:2017-07-13 07:45:05

标签: javascript google-maps google-maps-api-3 mercator

以下代码是计算某个位置的像素和平铺坐标。它使用256px瓷砖工作正常。但是如果你使用512px tile世界并且像素坐标工作正常但是tile坐标不会改变,这是不可能的。

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/

0 个答案:

没有答案