-3

我有个问题。我正在发送带有 lat 和 lng 值的 JavaScript 字符串。然后,在 JavaScript 中,我使用该split()方法,并获取包含此值的数组。如何绘制所有标记?此功能无法正常工作 - 未在地图上创建标记。怎么了?

                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
4

3 回答 3

3

您需要引用<%=lngstring %>并将<%=latstring %>它们标记为string

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

否则你会有这样的东西:

var lngstring = 18.69872650000002#14.971600200000012#15.58599490000006#16.077066699999932;

这是无效的javascript,浏览器无法解析它。

于 2012-07-08T14:23:50.333 回答
0

在您的代码中,您没有设置地图对象,可以如下设置,在添加标记之前使用它。

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

在 HTML 中

<div id="map_canvas"></div>
于 2012-07-08T07:41:06.207 回答
0

纬度和经度值必须是数字。在传递给 LatLng 构造函数的字符串上调用 parseFloat():

改变:

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

到:

position: new google.maps.LatLng(parseFloat(arraylat[i]),parseFloat(arraylng[i]))
于 2012-07-08T14:14:20.340 回答