我正在开发一个基于mapbox的小游戏,我目前正在开发基于lat / lng的块系统。它们之间的距离应该相同。正如您在示例中所看到的,每个块的宽度和高度相等。小灰色正方形只是大块中间。这些块是在纬度/经度零附近创建的,它们不受墨卡托投影的影响。
但是由于墨卡托投影,大块之间的距离越来越远,因为它们远离中间(它们看起来有点拉伸)。
正如您所看到的,每个之间的距离不再相等。每个块的高度确实增加了。下面是另一张关于墨卡托投影的图片,可视化我的意思:
第一张照片的大块是在字图中间附近创建的(大黑色上箭头指向的位置) 第二张照片中的块是在世界地图底部附近创建的,另一个箭头指向的位置。
正在开发的游戏类型需要相同的块大小,并且看起来不那么好,因为在某些时候由于拉伸,块看起来不同。
我想在mercator投影上实现这样的块系统:
我按如下方式计算块:
First we need the player lat/lng coordinates: 3.0146683, 5.3046076
One latitude is about: 110.57 km -> 110570 meters
One longitude is about: 111.32 km ->111320 meters
One chunk should be about 750 meters on the map.
Because Latitude and Longitude got different ranges we need to adjust the chunk size.
One latitude factor = 110570 / 750 = 147,43
One longitude factor = 111320 / 750 = 148,42
One latitude chunk size = 110570 / 147 = 750 meters
One longitude chunk size = 111320 / 148,42 = 750 meters
(Maybe this step is unnecessary)
Now we convert the Lat/Lng to meters.
Latitude in Meter = 3.0146683 * 110570 meters = 333 331.873931 Meters
Longitude in Meter = 5.3046076* 111320 meters = 590 508.918032 Meters
Now we need to calculate the meters till the last chunk by using modulo.
Latitude Modulo => 333 331.873931 modulo 750 = 331 meter
Longitude Modulo => 590 508.918032 modulo 750 = 258 meter
After that we are able to calculate the Latitude and Longitude chunks.
Latitude chunk position = 333 331.873931 - 331 = 333 000.873931
Longitude chunk position = 590 508.918032 -258 = 590 250.918032
When we divide that now through the chunk size we get the actual chunk position.
Chunk X = 333 000.873931 / 750 = 444,0011
Chunk Y = 590 250.918032 / 750 = 787,001
Rounded: Chunk X = 444 ; Chunk Y = 787
Now we know that the player stands right in this chunk [444;787]
In the next step I just calculate the Chunk X and Y back to latitude and
longitude and convert them via transform.AsUnityPosition to 3D coordinates,
where I place those grey objects then.
所以基本上我需要一种方法来在每个块之间保持相同的视觉距离。或者是一种将投影从mercator更改为方形投影的方法,其中没有任何东西被拉伸。我之前从未使用过mapbox / googlemaps ...所以我是新手。或者是否可以使用一个公式来防止我的块被墨卡托投影拉伸?