2016-08-31 15 views
1

私のアンドロイドアプリには、衛星マップベースの画像であるシンプルな「マップ」があります。私はこのマップの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) 

https://github.com/googlemaps/android-maps-utils/blob/master/library/src/com/google/maps/android/SphericalUtil.java

と私は逆の方法で動作するものが必要です。ここに私の実装ですが、それは私に(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を得るために緯度を使用していました。

まだ何かが間違っている、ここではそれはアプリでどのように見えるかです:

enter image description here

:それは(私はこの例を作るために落書きを使用)されている必要がどこ

enter image description here

はここですちょうど明確にするために、私は1.1という名前のポイントについて話しています。他の人に注意を払わず、イメージ自体にハードコードされています。

+0

findFractionX関数の使い方を追加してください。正しく使用すると、私にはうまく見えます。今のアイデアは、おそらくあなたはlong/latとx/yに切り替えるでしょうか?編集:そのlong = x、lat = yを追加する必要があります。 – Squirrelkiller

+0

findFractionXコールの呼び出しがどのようになっているかは分かりますか。編集:そしてどこからMAP_LEFT_TOPとMAP_RIGHT_BOTTOMを取得しますか? – Squirrelkiller

答えて

1

私は別のアイデアを書いているので、私はちょうどより多くのスペースを持つために完全な答えに両方を入れます。

Long = xlat = y:あなたが誤ってlong/latまたはx/yを切り替えていない場合

まず、確認してください。

次に、追加した外観をどのように表示しますか?マップマーカーの正確な位置を取得している間は、その位置にビューを追加するだけで外見が見える場合があります。

ビュー自体には幅と高さがある可能性があります。Googleマップの店舗をクリックしたときのように、マーカの上に配置したいと思うかもしれませんか?計算された位置に置くだけで、左上隅がその位置に置かれます。

+1

はい、間違いなく、緯度はx、経度はyと仮定しています。それは確かに間違いでした。今はポイントが目的地にはるかに近いが、それでもなおオフである。私はビューのサイズを考慮し、ポイントの中心に置く(私はその部分が正しいと確信しています)。ほとんどのマップが少しオフになっているか、LEFT_TOP/RIGHT_BOTTOMポイントが不正確です。私は1分で私の答えを編集し、私の結果を表示します。 – Makalele

+0

さて、私は彼の問題に対する解決策を提供したのですか? – Squirrelkiller

+0

@MarlonRegenhardt本当はそうではありません。あなたはコメントに値する提案を提供しました。 「スペースを増やす」は、コメントに答えを使用する理由ではありません。 – TripeHound

関連する問題