2013-04-15 42 views
0

在我的應用程序中,我想將應用程序定義的數據存儲在路徑中的每個latLng上。 我已經得到了這個使用下面的代碼示例工作,但我想知道這是否是一個未記錄的僥倖,只是'發生'工作,並可能在未來破碎,或者它是完全有效的代碼,應該始終工作? 總之,'getPath'保證返回傳入的相同latLng對象,或者它可以用相同的經緯度和相同的lng傳回新的對象,但Google不關心的其他任何內容都可能不會保留在那裏?谷歌地圖 - 將應用程序定義的數據存儲在路徑中

感謝線路上的任何援助

點擊,它應提醒「一二三」。

<!DOCTYPE html> 
<html> 
    <head> 
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> 
    <style type="text/css"> 
     html { height: 100% } 
     body { height: 100%; margin: 0; padding: 0 } 
     #map-canvas { height: 100% } 
    </style> 
    <script type="text/javascript" 
     src="https://maps.googleapis.com/maps/api/js?key=MY_KEY&sensor=false"> 
    </script> 
    <script type="text/javascript"> 
     function initialize() { 
     var mapOptions = { 
      center: new google.maps.LatLng(52.0, -1.5), 
      zoom: 10, 
      mapTypeId: google.maps.MapTypeId.ROADMAP 
     }; 
     var map = new google.maps.Map(document.getElementById("map-canvas"), 
      mapOptions); 

     var polyline = new google.maps.Polyline({ 
      map: map, 
      strokeColor: "blue", 
      strokeThicknedss: 2 
     }); 

     polyline.setPath([ 
      getLatLng(51.9, -1.4, "one"), 
      getLatLng(52.0, -1.5, "two"), 
      getLatLng(52.0, -1.6, "three") 
     ]); 

     google.maps.event.addListener(polyline, "click", function() { 
      var path = this.getPath().getArray(); 
      var datas = []; 
      for(var i = 0; i < path.length; i++) { 
       var ll = path[i]; 
       datas.push(ll.data); 
      } 
      alert(datas.join("\n")); 
     }); 
     } 

     function getLatLng(lat, lng, data) { 
     var ll = new google.maps.LatLng(lat, lng); 
     ll.data = data; 
     return ll; 
     } 

     google.maps.event.addDomListener(window, 'load', initialize); 
    </script> 
    </head> 
    <body> 
    <div id="map-canvas"/> 
    </body> 
</html> 

回答

0

according to the docs的getPath() '檢索第一路徑'。並且你剛剛使用setPath()來設置路徑......我不確定Google會不會混淆這些數據;你的方法對我來說聽起來很合理

0

我發現存儲多段線的最佳方法是在幾何庫中使用Google的編碼函數。

var polylineToStore = google.maps.geometry.encoding.encodePath(polyline.getPath()); 

這將polylineToStore變量設置爲字符串。當你想重新使用編碼折線你只需要對它進行解碼:

polyline.setPath(google.maps.geometry.encoding.decodePath(polylineToStore)) 

https://developers.google.com/maps/documentation/javascript/geometry#Encoding

相關問題