3

次のコードは、場所のピクセルとタイルの座標を計算するためのものです。256px のタイルを使用すると問題なく動作します。しかし、512px のタイル ワールドを使用し、ピクセル座標は正常に動作しますが、タイル座標は変更されず、これは不可能です。

256 ピクセルのタイル サイズ

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 ----------------

512 ピクセルのタイル サイズ

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