私のアンドロイドアプリには、衛星マップベースの画像であるシンプルな「マップ」があります。私はこのマップの2つのコーナーに正確なLatLng
ポジションを持っています:正確には、左上と右下。さて、与えられたLatLng
ポイント私は小さなビューを作成したいマップ(マーカー)にそれを追加したい。これを行うために、私は "マップ"上のピクセルでパーセンテージxとyを計算しなければなりません。他の2つのポイント間のポイントxとyの割合を調べよう
は、だからここにまとめるために、私のデータです:
LatLng MAP_LEFT_TOP; //constant point
LatLng MAP_RIGHT_BOTTOM; //constant point
LatLng location; //point, which should be inside map rectangle
私は計算する必要がどのような:
float percentageX; //percentage x position of "location" on the map
float percentageY; //percentage y position of "location" on the map
ここ
私は機能を見つけました:
LatLng interpolate(LatLng from, LatLng to, double fraction)
と私は逆の方法で動作するものが必要です。ここに私の実装ですが、それは私に(Y /経度のための同じを)正しい結果が得られていません:
double findFractionX(double latitudeLeftTop, double latitudeRightBottom, double latitude){
return (latitude - latitudeLeftTop)/(latitudeRightBottom - latitudeLeftTop);
}
それから私はこのようなマーカーの最終的な位置を取得することができます
float imageViewWidth; //width of the imageView holding map
float imageViewHeight; //height of the imageView holding map
float x = percentageX * imageViewWidth;
float y = percentageY * imageViewHeight;
編集を: 私の間違いは、ちょうど反対の間にxと経度にyを得るために緯度を使用していました。
まだ何かが間違っている、ここではそれはアプリでどのように見えるかです:
:それは(私はこの例を作るために落書きを使用)されている必要がどこ
はここですちょうど明確にするために、私は1.1という名前のポイントについて話しています。他の人に注意を払わず、イメージ自体にハードコードされています。
findFractionX関数の使い方を追加してください。正しく使用すると、私にはうまく見えます。今のアイデアは、おそらくあなたはlong/latとx/yに切り替えるでしょうか?編集:そのlong = x、lat = yを追加する必要があります。 – Squirrelkiller
findFractionXコールの呼び出しがどのようになっているかは分かりますか。編集:そしてどこからMAP_LEFT_TOPとMAP_RIGHT_BOTTOMを取得しますか? – Squirrelkiller