我將iOS應用程序移植到Android,並使用Google Maps Android API v2.
應用程序需要在地圖上繪製熱圖覆蓋圖。TileProvider方法getTile - 需要將x和y轉換爲緯度/經度
到目前爲止,看起來最好的選擇是使用TileOverlay
並實現自定義TileProvider
。在方法getTile
中,我的方法被給予x,y和縮放,並且需要返回Tile
形式的位圖。到現在爲止還挺好。
我有一個熱圖項目的數組,我將用它來繪製徑向漸變到位圖上,每個都有一個lat/long。我在遇到以下兩項任務時遇到了問題:
- 如何確定由x,y和zoom表示的圖塊是否包含熱圖項目的緯度/經度?
- 如何將熱圖項目的lat/long轉換爲位圖的x/y座標。
謝謝你的幫忙!
UPDATE
得益於以下MaciejGórski的回答,和馬辛的實現我能得到我的問題回答了上半年,但我仍然需要與第二部分幫助。爲了澄清,我需要一個函數來返回指定經緯度的瓦片的x/y座標。我已經嘗試顛倒了MaciejGórski和Marcin的答案,沒有運氣的計算。
public static Point fromLatLng(LatLng latlng, int zoom){
int noTiles = (1 << zoom);
double longitudeSpan = 360.0/noTiles;
double mercator = fromLatitude(latlng.latitude);
int y = ((int)(mercator/360 * noTiles)) + 180;
int x = (int)(latlng.longitude/longitudeSpan) + 180;
return new Point(x, y);
}
任何幫助表示讚賞!
您是否發現將LatLng Z轉換爲XY的方法?我發現了一個功能,部分工作,但它給了我錯誤的y。 –