当我初始化我的地图时,我想使用存储在输入 html 字段中的值作为路径来生成一个多边形。
polytest = document.getElementById('acf-field_5e59146d57037').value;
addPolygon(polytest);
function addPolygon(polytest){
polytototo = new google.maps.Polygon({
path: polytest,
map: map,
draggable:true,
editable: true,
});
polytototo.setMap(map);
}
当我从输入字段 id 复制/过去我的数据时,'acf-field_5e59146d57037'
这就是我得到的{lat: 66.064964, lng: 112.872635}, {lat: 42.249039, lng: 87.560135}, {lat: 55.940113, lng: 60.841385}
当我把这些数据放在里面时path: [{lat: 66.064964, lng: 112.872635}, {lat: 42.249039, lng: 87.560135}, {lat: 55.940113, lng: 60.841385}]
,它就起作用了....
我怎样才能使它与变量一起工作polytest
(如上面的主要代码)?
编辑:也许将数据发送到 html 输入字段的方法可能很重要。实际上,现有绘制多边形的数据被发送到 html 中,如下所示:
for (var i = 0; i < polygon.getPath().getLength(); i++) {
polypoint = polygon.getPath().getAt(i).toUrlValue(6).split(",");
if (i === 0) { prefix_coord = '{'; } else { prefix_coord = ', {'; }
document.getElementById('acf-field_5e59146d57037').value += prefix_coord + 'lat: ' + polypoint[0] + ', lng: ' + polypoint[1] + '}';
}
});
当我按原样运行您的代码时,出现 javascript 错误:
InvalidValueError: not an Array
问题在于:"{lat: 66.064964, lng: 112.872635}, {lat: 42.249039, lng: 87.560135}, {lat: 55.940113, lng: 60.841385}"
不是数组,而是字符串。
如果在它周围添加“[]”,在属性名称周围加上引号(通过jsonlint.com运行它),然后调用JSON.parse
它,它将是一个数组:
<input id='acf-field_5e59146d57037' value="[{lat: 66.064964, lng: 112.872635}, {lat: 42.249039, lng: 87.560135}, {lat: 55.940113, lng: 60.841385}]" />
将该数组用于多边形的路径。
var map;
var bounds;
function initMap() {
map = new google.maps.Map(document.getElementById('map'), {
zoom: 5,
center: {
lat: 24.886,
lng: -70.268
},
mapTypeId: 'terrain'
});
bounds = new google.maps.LatLngBounds();
polytest = document.getElementById('acf-field_5e59146d57037').value;
console.log(polytest);
polytest =JSON.parse(polytest);
for (var i=0; i<polytest.length; i++) {
bounds.extend(polytest[i])
}
map.fitBounds(bounds);
addPolygon(polytest);
}
function addPolygon(polytest) {
polytototo = new google.maps.Polygon({
path: polytest,
map: map,
draggable: true,
editable: true,
});
polytototo.setMap(map);
}
#map {
height: 80%;
}
/* Optional: Makes the sample page fill the window. */
html, body {
height: 100%;
margin: 0;
padding: 0;
}
<input size="100" id='acf-field_5e59146d57037' value='[{"lat": 66.064964, "lng": 112.872635}, {"lat": 42.249039, "lng": 87.560135}, {"lat": 55.940113, "lng": 60.841385}]' />
<div id="map"></div>
<!-- Replace the value of the key parameter with your own API key. -->
<script async defer
src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCkUOdZ5y7hMm0yrcCQoCvLwzdM6M8s5qk&callback=initMap">
</script>
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句