2016-08-31 2 views
1

내 안드로이드 앱에는 위성지도 기반의 이미지 인 간단한 "지도"가 있습니다. 이지도의 두 구석에 정확한 LatLng 위치가 있습니다. 정확하게 보려면 왼쪽 상단과 오른쪽 하단. 자, 주어진 LatLng 지점에 의해 작은보기를 추가하려면지도 (마커)에 추가하십시오. 이를 위해서는 필자의 "지도"에서 픽셀의 백분율 x와 y를 계산해야합니다. 다른 두 지점 사이의 포인트 x와 y의 백분율을 알아보십시오

그래서 여기에 요약 내 데이터의 TO : 내가 계산해야 무엇

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/경도에 대해 동일) 제공하지 않습니다

float imageViewWidth; //width of the imageView holding map 
float imageViewHeight; //height of the imageView holding map 
float x = percentageX * imageViewWidth; 
float y = percentageY * imageViewHeight; 

편집 :

double findFractionX(double latitudeLeftTop, double latitudeRightBottom, double latitude){ 
    return (latitude - latitudeLeftTop)/(latitudeRightBottom - latitudeLeftTop); 
} 

가 그럼 난 이렇게 마커의 최종 위치를 얻을 수 있습니다 : 내 실수는 위도를 사용하여 y를 얻는 x와 경도를 얻는 것과 정반대입니다.

아직도 뭔가 여기 잘못이 응용 프로그램에서 보이는 방법은 다음과 같습니다

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 지점이 부정확합니다. 나는 잠시 후에 나의 대답을 편집하고 나의 결과를 보여줄 것이다. – Makalele

+0

음, 나는 그의 문제에 대한 해결책을 제공 했습니까? – Squirrelkiller

+0

@MarlonRegenhardt 아니요. 당신은 의견에 가치있는 제안을했습니다. "더 많은 공간을 확보하는 것"은 코멘트에 대한 대답을 사용하는 이유가 아닙니다. – TripeHound