iOS アプリを Android に移植しており、Google Maps Android API v2.
アプリケーションを使用してヒートマップ オーバーレイをマップに描画する必要があります。
TileOverlay
これまでのところ、 を使用して custom を実装するのが最善の選択肢のようTileProvider
です。methodgetTile
では、私のメソッドは x、y、および zoom を与えられ、ビットマップを a の形式で返す必要がありますTile
。ここまでは順調ですね。
ビットマップに放射状のグラデーションを描画するために使用するヒートマップ アイテムの配列があり、それぞれに緯度/経度があります。次の2つのタスクに問題があります。
- x、y、およびズームで表されるタイルにヒートマップ アイテムの緯度/経度が含まれているかどうかを判断するにはどうすればよいですか?
- ヒートマップ アイテムの緯度/経度をビットマップの x/y 座標に変換するにはどうすればよいですか。
ご協力ありがとうございました!
アップデート
以下の MaciejGórski の回答と marcin の実装のおかげで、質問の前半に回答を得ることができましたが、2 番目の部分についてはまだ助けが必要です。明確にするために、指定された緯度/経度のタイルの 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);
}
どんな助けでも大歓迎です!