Как убрать оверлей при рисовании полигонов на карте? - PullRequest
0 голосов
/ 20 июня 2020

У меня есть несколько многоугольников на карте и список многоугольников в боковом меню, когда я проверил многоугольник на карте aws. Когда я проверял другой многоугольник, он создает другой многоугольник, но проблема в том, что когда я проверяю каждый новый многоугольник, он перекрывает старые многоугольники. Я пытаюсь обнулить полигоны перед созданием новых, но это не работает. Надеюсь, вы понимаете мой вопрос.

Ajax Ответ

 $.ajax({
 url: "{{route('ucs.active')}}",
 method: "POST",
 data: {'id': id, 'is_active': is_active, "_token": "{{ csrf_token() }}"},
 success: function (response) {
 let latLong = response.zones;

 let map;
 let polygons = [];
 let driverLat = latLong.map(({
  lat_long
 }) => lat_long)
 let color = latLong.map(({
  color
 }) => color)

 for (let i = 0; i < driverLat.length; i++) {

  let arrayCoords = [];
  let jsonData = JSON.parse(driverLat[i]);
  for (let j = 0; j < jsonData.length; j++) {
    let res = jsonData[j].lat.split(",");
    let lat = parseFloat(res[0]);
    let lng = parseFloat(res[1]);

    arrayCoords.push(new google.maps.LatLng(lat, lng));

   }
   if (polygons.length > 0) {
    polygons.setMap(null);
   }

  polygons = new google.maps.Polygon({
    editable: false,
    paths: arrayCoords,
    strokeColor: color[i],
    strokeOpacity: 0.8,
    strokeWeight: 2,
    fillColor: color[i],
    fillOpacity: 0.35,
    map: map,
    draggable: false,
    geodesic: true,
  });
}
} 

1 Ответ

0 голосов
/ 20 июня 2020

Когда вы нажимаете другой флажок, вам необходимо установить для класса DrawingMode из google.maps.drawing.DrawingManager значение null, прежде чем создавать другой многоугольник.

  private _drawingManager: google.maps.drawing.DrawingManager;
  private _drawingOptions: google.maps.drawing.DrawingManagerOptions;

  this._drawingOptions = {
      drawingMode: google.maps.drawing.OverlayType.POLYGON,
      drawingControl: false,
      drawingControlOptions: {
        position: google.maps.ControlPosition.TOP_CENTER,
        drawingModes: [
   
          google.maps.drawing.OverlayType.POLYGON
        
        ]
      }
    };

    const dm = new google.maps.drawing.DrawingManager(this._drawingOptions);
    this._drawingManager = dm;

Вам необходимо установить режим рисования обнулен на Polygon:

google.maps.event.addListener(drawingManager, 'overlaycomplete', function(event) {
    if (event.type == google.maps.drawing.OverlayType.POLYGON) {
        if(polygon != null)
            polygon.setMap(null);
        polygon = event.overlay;
        var bounds = polygon.getBounds();
        drawingManager.setDrawingMode(null);
    }
});

Сообщите мне, если это поможет. Спасибо !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...