私は、AndroidにiOSアプリを移植し、アプリケーションがマップ上にヒートマップオーバーレイを描画する必要がGoogle Maps Android API v2.
を使用しています。TileProvider方法getTile - LATするxとyを翻訳する必要性/長い
これまでのところ、TileOverlay
を使用し、カスタムTileProvider
を実装するのが最善の方法です。メソッドgetTile
では、私のメソッドにx、y、およびzoomが与えられ、Tile
の形式でビットマップを返す必要があります。ここまでは順調ですね。
は私が緯度/経度でそれぞれ、ビットマップ上に放射状のグラデーションを描画するために使用するヒートマップアイテムの配列を持っています。
- x、y、およびzoomで表されるタイルにヒートマップアイテムの緯度/経度が含まれているかどうかを確認するにはどうすればよいですか?
- ヒートマップアイテムの緯度/経度をビットマップのx/y座標に変換するにはどうすればよいですか?
はあなたの助けをありがとう!以下MaciejGórskiの答え、およびマルチンの実装に
UPDATE
おかげで私は私の質問答えの前半を得ることができたが、私はまだ第二の部分との助けを必要としています。明確にするために、指定された緯度/経度のタイルのx/y座標を返す関数が必要です。私はMaciejGrskiと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);
}
ご協力いただきましてありがとうございます。ズームレベル0で
LatLng ZをXYに変換する方法を見つけましたか?私は部分的に動作する関数を見つけましたが、それは私に間違ったyを与えます。 –