2012-07-08 77 views
-3

我遇到問題。我正在發送帶有lat和lng值的JavaScript字符串。然後,在JavaScript中,我使用split()方法,並獲取具有此值的數組。我如何繪製所有標記?此功能無法正常工作 - 標記不會在地圖上創建。哪裏不對?通過lat和lng值設置標記

   var lngstring = <%=lngstring %> 
       var latstring = <%=latstring %> 
       alert(latstring); 
       alert(lngstring); 
       var arraylat = latstring.split("#"); 
       var arraylng = lngstring.split("#"); 
       alert(arraylat.length) // 200 
       for (var i = 0; i < arraylat.length; i++) { 
         var marker = new google.maps.Marker({ 
         position: new google.maps.LatLng(arraylat[i],arraylng[i]), 
         map: map 
         }); 
         //alert(arraylat[i],arraylng[i]); 
       } 
       alert("ready!"); 
       alert(arraylat[2]); // 37.789879 
       alert(arraylng[2]); // -122.39044200000001 
+0

什麼是你的latstring的格式,它是什麼樣子? – tsukimi 2012-07-08 07:10:50

+0

您是否檢查過地圖對象,它是否有地圖參考。 – tsukimi 2012-07-08 07:17:59

+0

「18.69872650000002#14.971600200000012#15.58599490000006#16.077066699999932」 - >我的latstring。你對地圖對象意味着什麼? – whoah 2012-07-08 07:28:44

回答

3

需要引用<%=lngstring %><%=latstring %>他們標記爲string

var lngstring = "<%=lngstring %>"; 
var latstring = "<%=latstring %>"; 

否則你會有這樣的事情:

var lngstring = 18.69872650000002#14.971600200000012#15.58599490000006#16.077066699999932; 

這是無效的JavaScript,和瀏覽器無法解析它。

+0

是啊,我忘了關於它。在其他功能,我做到了這一點,但現在不是:)問題解決了!謝謝 – whoah 2012-07-08 14:32:08

0

在你的代碼沒有設置地圖對象,它可以設置如下圖所示,添加您的標誌之前使用。

var mapOptions = { 
    zoom: 12 
}; 
var map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions); 

在HTML

<div id="map_canvas"></div> 
+0

我之前在腳本中使用過,我設置了地圖對象。地圖是可見的 – whoah 2012-07-08 13:12:57

0

緯度和經度值必須是數字。

變化:

position: new google.maps.LatLng(arraylat[i],arraylng[i]) 

到:您所傳遞的經緯度構造函數的字符串調用parseFloat()

position: new google.maps.LatLng(parseFloat(arraylat[i]),parseFloat(arraylng[i])) 
+0

這是不正確的,看[這裏](http://jsbin.com/ewohoz/edit#preview) – Engineer 2012-07-08 14:24:22

+0

這不是問題,但大thx的幫助:)問題解決 – whoah 2012-07-08 14:28:28

相關問題