2011-04-25 75 views
0

全部問候,標記縮放時的漂移位置

我開發了一些繪製兩點多義線(直線)的JavaScript代碼。
在zoom_changed事件中,我計算線中點的位置,並在該位置創建標記。
我注意到,隨着我進一步放大這些標記不斷從實際的中點漂移到線上!

這種技術有什麼問題(見下面的代碼)?

問候

function label() { 
    for(var i in links) { 
     if(links[i].label != null) { 
      links[i].label.setMap(null); 
      delete links[i].label; 
     } 

     if(links[i].view == view && map.zoom >= links[i].minZoom) { 
      var lat = (links[i].coords[0].lat() + links[i].coords[1].lat())/2.0; 
      var lng = 0.0; 
      var latLen = Math.max(links[i].coords[0].lat(), links[i].coords[1].lat()) - Math.min(links[i].coords[0].lat(), links[i].coords[1].lat()); 
      var lngLen = Math.max(links[i].coords[0].lng(), links[i].coords[1].lng()) - Math.min(links[i].coords[0].lng(), links[i].coords[1].lng()); 
      var slope = latLen/lngLen; 

      if(lngLen < 180.0) 
       lng = (links[i].coords[0].lng() + links[i].coords[1].lng())/2.0; 
      else 
       lng = (360.0 + (links[i].coords[0].lng() + links[i].coords[1].lng()))/2.0; 

      links[i].label = new google.maps.Marker({ 
       map: map, 
       position: new google.maps.LatLng(lat, lng), 
       icon: "http://chart.apis.google.com/chart?chst=d_text_outline&chld=FFFF66|11|h|FF6600|b|" + links[i].text 
      }); 
     } 
    } 
} 

回答

0

Geeko(愛處理),

有可能是沒有錯的代碼......谷歌地圖顯示「圖」 ......他們甚至不嘗試以嚴格意義上顯示「地圖」。放大或縮小時,所有的地方都會「轉移」。一段時間以來,新界海岸約100公里的地方「失蹤」。這是一張圖。偉大的是它是什麼(實際上絕對輝煌,恕我直言)...只是不要指望它是準確的。

乾杯。基思。

0

的錯誤是你寫

(links[i].coords[0].lng() + links[i].coords[1].lng())/2.0; 

這不給線的中點。爲了找到一條線的中點,使用幾何庫的interpolate()功能
你也必須對您的折線設置「大地」選項,並使用此:

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false&libraries=geometry"></script> 

本(從谷歌地圖API論壇)

相關問題