2011-03-12 5 views
4

GoogleMap에서 마커를 움직여 실시간 객체 이동을 시뮬레이션하려고합니다. 현재 나는이 작업을 수행하는 방법에 대한 자바 스크립트 의사 코드는 다음과 같습니다 이동 배열의 각 요소를 통해 계산프로세서 집약적 인 작업없이 Google Maps API v3에서 마커 이동?

var marker = new google.maps.Marker({ 
    position: myLatlng, 
    map: map 
}); 

var myMovementArray[] = new movementArray(startPoint, endPoint); 

drawMovement(int pos){ 
    marker.setPosition(myMovementArray[pos]["lat"], myMovementArray[pos]["lng"]); 
    pos++; 
    if (pos < myMovementArray.length()){ 
     setTimeout('drawMovement('+pos+')', 33); 
    } 
} 

init(){ 
    drawMovement(0); 
} 

: 참고로

deltaLat = (endPos.lat - startPos.lat)/frames; 
deltaLng = (endPos.lng - startPos.lng)/frames; 
myMovementArray[i]["lat"] = startPos.lat + (deltaLat * i); 
myMovementArray[i]["lng"] = startPos.lng + (deltaLng * i); 

, 내가 사용하고있는 모든 자바 스크립트 파일이 다 at : http://spad.es/js/com.kamkash.locateme.viewer.dev.js

Google지도에서 마커를 움직이는 방법은 프로세서 집약적 인 것처럼 보입니다. 저는 Google Maps API가 A 지점에서 B 지점으로 마커 움직임을 움직이는 깨끗한 방법을 가지고 있는지 찾지 만 아무것도 찾을 수 없습니다. 그리고 제가 발견 한 다른 일을 가장 많이 참조한 방법은 http://www.geocodezip.com/v3_animate_marker_directions.html입니다.하지만 그 방법은 내가 배치 한 것과 같은 방법을 사용합니다.

아무도이 일을 더 프로세서 효율적인/청소기 방법이 있습니까

www.spad.es/random :

코드에서 실제로 사용됩니까?

감사합니다.

+0

나는이 항목을 보았다 : http://stackoverflow.com/questions/665193/how-to-animate-a-custom-google-maps-marker-along-a-route를하지만 그렇지 않습니다 프로세서 친화적 인 접근 방법이 있는지 질문에 답하십시오. 방향이있는 자동차의 예는 덜 집중적 인 GIcon을 사용하지만 정확도 반경 (google.maps.Circle 객체)을 부착 할 수 있는지 확실하지 않습니다 – Kaiesh

+1

Google지도 API는 마커를 훨씬 효율적으로 렌더링합니다 KML을 통해 설정합니다. 마커 이동에 대한 성능이 향상되는지는 확실하지 않지만 그럴듯 해 보입니다. – Trott

답변

2

이것은 캔버스 마커에 문제가있을 수 있습니다. optimized: false 아이콘 옵션을 설정해보세요. 그러면 마커가 캔버스 마커로 렌더링되지 않습니다.

+0

이 말이 맞습니다. 매번 전체 타일을 렌더링해야합니다. – Oliver

0

Bresenahm 알고리즘과 같은 래스터 알고리즘을 사용하여 deltaLat 및 deltaLng을 많이 최적화 할 수 있습니다 : http://en.wikipedia.org/wiki/Bresenham%27s_line_algorithm. x-ax에서는 항상 1 픽셀 간격을 사용하고 y-ax에서는 영리한 오류 수정에 달려 있습니다.

deltaLat = (endPos.lat - startPos.lat)/frames; 
deltaLng = (endPos.lng - startPos.lng)/frames; 
관련 문제