2010-10-02 134 views
3

我寫了一個小算法,可以將標記從 移動到另一個點。該算法是這樣的僞代碼:如何使用Google地圖平滑地標記標記?

lat_delta = new_lat - old_lat; 
lng_delta = new_lng - old_lng; 

for(alpha=0; alpha < 1; alpha += 0.1) { 
    lat = old_lat + (alpha * lat_delta); 
    lng = old_lng + (alpha * lng_delta); 
    update_marker(lat, lng); 
} 

的完整代碼可在http://dev.syskall.com/map/http://dev.syskall.com/map/commute.js

我遇到的問題是,當地圖縮小時,動畫似乎是「曲折曲折」。這就是說,當你放大, 動畫是更順暢。

我認爲這可能是由於我的動畫是基於 lat,lng座標而不是屏幕上的像素。縮小時,Google地圖不會精確到位,並且必須以某種方式圍繞座標位置。

當然,當地圖放大時當前的實施效果很好,但在縮小時效果不是很好。

有沒有辦法解決這個問題?

回答

0

是... api gives you methods可以獲得地圖上所有標記的像素座標。我會做到以下幾點:

讓你標記的像素聯合ORDS

渲染僞標記上當場

刪除原來的標記

動畫的虛擬的新的專用的像素值當場

設立一個新的地圖標記

刪除啞元

在開始和結束時,您可以使用api從像素獲取latlng,反之亦然。

+0

問題是您只能通過Latlng對象定位標記。無法直接設置頂點:/ – 2010-10-03 21:26:47

+0

並且從像素合作伙伴轉換給我提出了同樣的問題,我試圖解決:谷歌做了一個可憐的latlng像素轉換 – 2010-10-03 22:00:13

+0

第一個問題可以通過從像素座標,有一種方法...但如果你認爲轉換質量不好,那麼就沒有太多的事情要做:( – 2010-10-04 04:51:50