2012-07-08 69 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

相关问题