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