通过lat和lng值设置标记

时间:2012-07-08 07:04:28

标签: javascript google-maps

我有问题。我正在发送带有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

3 个答案:

答案 0 :(得分:3)

您需要引用<%=lngstring %><%=latstring %>来将其标记为string

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

否则你会有这样的事情:

var lngstring = 18.69872650000002#14.971600200000012#15.58599490000006#16.077066699999932;

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

答案 1 :(得分:0)

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

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

在HTML中

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

答案 2 :(得分:0)

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

变化:

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

为:

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