2014-10-29 2 views
0

onLocationChange (위치 정보)가 호출되면 사용자의 위치를 ​​추적하고 폴리 라인을 그리는 앱을 만듭니다. 폴리 라인 색상은 가속도계에 따라 다릅니다. 폴리 라인을 사용하는 방법을 알고 있지만 PolyLineOptions 객체는 단색 일 수 있습니다. GroundOverlay를 사용하여이 방법을 사용할 수 있지만 비트 맵에서 선을 그릴 때 내 위치를 사용하는 방법과 좌표를 사용하는 방법을 알지 못합니다. 누군가가 나를 도울 수 있고, 예제 링크를 줄 수 있습니까? 사용자가 이동할 때 각 폴리 라인 (또는 비트 맵 라인)이 동적으로 추가되어야합니다. 나는 조사를했으나 발견 한 것은 모두 Drawing multi color PolyLines on Maps V2이며 모든 것을 설명하지는 않습니다. 도와 주셔서 감사합니다! 'android에서 다른 색상의 폴리 라인 그리기

+0

사용자 이동, 당신은 다음 그냥 대신 기존에 추가의 점 세트 (당신이 포인트 #을 최소화하기 위해 부드럽게 할 수있는)로 새로운 폴리 라인을 만들 수 있습니까? 이 방법으로 새 ​​폴리선을 작성하면 색상을 지정할 수 있습니다. – alpinescrambler

+0

onLocationChange가 매초마다 호출되므로 처리 할 많은 폴리 ​​라인이있을 것이라고 생각합니다. – user1275995

+0

바로 추가하지 마십시오. 예를 들어 수를 1000 점 (또는 타이머, 5 분마다)에 도달하면 먼저 모으고 (점을 줄이기 위해) SMOOTH를 수행 한 다음 나머지 점과 함께 새 폴리선을 추가합니다. 사용자가 직선으로 여행 한 경우 스무딩 알고리즘은 2 점만 유지해야합니다. – alpinescrambler

답변

0

"각 locationChange에 그것은 색상의 가속도계 변화에 따라, 나는 실시간으로 작업을 수행 할"이 아마 앱이 부진 나타나게됩니다

주 또는 여부를 걸려 폴리 라인을 추가하거나 원하는 GroundOverlay 방식을 사용하십시오.

어쨌든, 여기에 내가는 "지면 오버레이 방식"

1) 속도의 각 범위를 나타냅니다 N 이미지 만들기와 함께 할 것입니다 방법입니다. 예를 들어 "느린"(0-1000)의 빨간색 이미지, 1001-2000의 녹색 이미지 등)

2.) 이러한 이미지의 리소스 ID를 보유 할 어레이를 방법 순서대로 정의하십시오. 당신은 그것이되기를 원합니다. 예를 들면 다음과 같습니다.

3.) 매번 locationChange가 발생하면 추가 할 이미지를 계산하고 오버레이로지도를 추가합니다. 예 :

.... 
float speed = loc.getSpeed(); // loc is the current location object passed in 
int speedBucket = (int) (speed/1000); // 1000 is the linear increment of your ranges for example 

//TODO: handle if speedBucket (array index) is out of range 

GoogleMap map = ...; // get a map. 
BitmapDescriptor image = BitmapDescriptorFactory.fromResource(speedImageBucket[speedBucket ]);; // get an image. 

// Adds a ground overlay with 50% transparency. 
GroundOverlay groundOverlay = map.addGroundOverlay(new GroundOverlayOptions() 
.image(image) 
.position(loc,1) 
.transparency(0.5)); 
+0

좋아,하지만 라인의 시작과 끝을 추정하는 방법을 말해, 그것의 너비가 가속도계 데이터에 의존해야 고정 될 수 없다 그래서 유연해야한다, 난 그냥 정적 이미지를 추가 할 수 없습니다 . – user1275995

관련 문제