Google maps 有没有办法获得字符串格式的谷歌地图多边形坐标值

Google maps 有没有办法获得字符串格式的谷歌地图多边形坐标值,google-maps,google-maps-api-3,Google Maps,Google Maps Api 3,这就是我画多边形的方式。我希望它得到绘制的多边形区域,并在下一页的地图上标记位于绘制的多边形区域下的属性,并在其上绘制多边形。我正在获取多边形的坐标,但很难将url上的坐标发送到下一页 var map = new google.maps.Map(document.getElementById('map'), { center: {lat: -34.397, lng: 150.644}, zoom: 8 }); var drawingManager = new googl

这就是我画多边形的方式。我希望它得到绘制的多边形区域,并在下一页的地图上标记位于绘制的多边形区域下的属性,并在其上绘制多边形。我正在获取多边形的坐标,但很难将url上的坐标发送到下一页

var map = new google.maps.Map(document.getElementById('map'), {
    center: {lat: -34.397, lng: 150.644},
    zoom: 8
  });

  var drawingManager = new google.maps.drawing.DrawingManager({
          drawingMode: google.maps.drawing.OverlayType.POLYGON,
          drawingControl: true,
          drawingControlOptions: {
            position: google.maps.ControlPosition.TOP_CENTER,
            drawingModes: [ 'polygon']
          },
          markerOptions: {icon: 'https://developers.google.com/maps/documentation/javascript/examples/full/images/beachflag.png'},
        polygonOptions: {
        editable: true
      }
        });

   google.maps.event.addListener(drawingManager, 'overlaycomplete', function(event) {

   $.each(event.overlay.getPath().getArray(), function(key, latlng){
            var lat = latlng.lat();
            var lon = latlng.lng();
            console.log(lat, lon); 
            console.log(latlng); //do something with the coordinates
           lats.push({lat:lat,lon:lon});

        var latlng = {lat: parseFloat(lat), lng: parseFloat(lon)};
        geocoder.geocode({'location': latlng}, function(results, status) {
          if (status === 'OK') {
            if (results[0]) {

             var t = results[0].formatted_address.split(',');
             var country = t[t.length-1];
             var state = t[t.length-2];
             locations.push({'state':state,country:country});
           //  console.log(locations);
           //  console.log(lats);
              // locations.push({'state:'lat,lon});
            } else {
              window.alert('No results found');
            }
          } else {
            window.alert('Geocoder failed due to: ' + status);
          }
        });
        });

我可以建议使用编码路径,以便在下一页的URL中将多边形作为字符串参数发送。Maps JavaScript API具有几何体库,允许将LatLng数组编码和解码为字符串:

你可以用像

google.maps.event.addListener(drawingManager, 'overlaycomplete', function(event) {
    var encodedPath = google.maps.geometry.encoding.encodePath(event.overlay.getPath());
    window.open(m_url + "?path="+encodedPath, "restore polygon"); 
});
使用“图形管理器”在第页中,并在下一页恢复板条阵列,如下所示

let params = (new URL(document.location)).searchParams;
let encodedPath = params.get("path");

if (encodedPath) {
    var path = google.maps.geometry.encoding.decodePath(encodedPath);

    var polygon = new google.maps.Polygon({
        paths: path,
        map: map
    });
}
概念验证

var映射;
函数initMap(){
map=new google.maps.map(document.getElementById('map'){
中心:{纬度:-34.397,液化天然气:150.644},
缩放:8
});
var drawingManager=new google.maps.drawing.drawingManager({
drawingMode:google.maps.drawing.OverlyType.POLYGON,
drawingControl:对,
drawingControlOptions:{
位置:google.maps.ControlPosition.TOP_CENTER,
绘图模式:[“多边形”]
},
标记选项:{
图标:'https://developers.google.com/maps/documentation/javascript/examples/full/images/beachflag.png'},
多克隆选择:{
可编辑:真
},
地图:地图
});
google.maps.event.addListener(drawingManager,'OverlyComplete',函数(事件){
var encodedPath=google.maps.geometry.encoding.encodePath(event.overlay.getPath());
console.log(encodedPath);
窗口打开(“http://output.jsbin.com/hicomid?path=“+encodedPath,“还原多边形”);
});
}
#地图{
身高:100%;
}
html,正文{
身高:100%;
保证金:0;
填充:0;
}