以下代码是计算某个位置的像素和平铺坐标。它使用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