将具有可变路径的多边形加载到 GOOGLE MAP API 中

鲁基托

当我初始化我的地图时,我想使用存储在输入 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在多边形Google Map API中添加图像?

从PHP检查Google Map Point是否在多边形中

具有旋转/增长/缩小/顺序选项的多边形内的Google Maps API缠绕路径

无法将Google Map API插入包括在Google Map Json中的URL中

Google Native中的Google Map Javascript API

使用Google Map Javascript API从JavaScript变量渲染GeoJSON多边形叠加层

多边形触摸检测Google Map API V2

如何在使用Google Map API时显示多边形标题

如何在PHP中使用Google Map API获取已创建多边形的纬度,经度

Google Map API v3:单击按钮时使多边形不可编辑

Google MAP API,确定路线是否经过多边形

Google Map API密钥未加载到SmartGWT应用程序中

Google Map Engine API中的信息窗口

Google Map API中的Legend div

如何在Android应用中绘制类似于Google Map的多边形?

使Google Map View包含iOS Swift 2.1中的多边形的最佳方法?

无法删除ui-gmap-google-map中的选定多边形

Google Maps Api将多边形更改为圆形

使用Android中的Google Maps API检查点是否在多边形中

Google MAPS API中的多个多边形和多个标记

如何在Google Maps API中触发开始多边形绘图?

在Google Maps API中获取以米为单位的多边形长度

如何在Google Static Maps API中创建一个带孔的多边形?

如何在Google Maps API中从多边形中排除区域

Google Maps API多边形中的fillColor不起作用

如何加载Google Map API密钥

如何在Google Map API Android中制作流畅美观的路径?

Google Map API已加载,但无法显示在网页中

将GIF图片添加到Google Map Api v2的标记中