通过lat和lng值设置标记

Setting markers by lat and lng values

本文关键字:设置 lng lat 通过      更新时间:2023-09-26

我有个问题。我正在向JavaScript发送带有lat和lng值的字符串。然后,在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

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

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

否则你会得到这样的东西:

var lngstring = 18.69872650000002#14.971600200000012#15.58599490000006#16.077066699999932;

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

在您的代码中,您不设置映射对象,可以像下面这样设置,在添加标记之前使用它。

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

在HTML 中

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

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

更改:

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

至:

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