Удалить элемент, не относящийся к KML, из архива KMZ, отображаемый на карте Google.

Я загружаю KMZ на карту Google, используя google.maps.KmlLayer. KMZ содержит слой KML и несколько файлов изображений. Я хочу, чтобы на моей карте отображался только файл KML, но файлы изображений также добавляются.

Есть ли способ удалить элементы, отличные от KML (например, файл PNG), из архива KMZ, отображаемого с помощью google.maps.KmlLayer? Кажется, я не могу найти PNG как элементы в DOM, иначе я бы просто скрыл или удалил их таким образом.

Одним из возможных решений может быть загрузка KMZ на сервер, извлечение только файла KML и добавление его на карту. Но я хотел бы попытаться сохранить это на стороне клиента, если это возможно.

Вот пример архива KMZ, который включает два файла PNG (в данном случае я хотел бы удалить только один из них, legend.png):

var map;

function initMap() {
  map = new google.maps.Map(document.getElementById('map'), {
    zoom: 2,
    mapTypeId: google.maps.MapTypeId.TERRAIN,
    center: {
      lat: 41.876,
      lng: -87.624
    }
  });

}

initMap();

var kmlUrl = 'https://www.weather.gov/source/crh/shapefiles/wwa.kmz';
var kmlOptions = {
  suppressInfoWindows: true,
  preserveViewport: false,
  map: map
};
var kmlLayer = new google.maps.KmlLayer(kmlUrl, kmlOptions);
<script src="https://maps.googleapis.com/maps/api/js?sensor=false"></script>
<div id="map" style="min-width: 800px; min-height: 660px"></div>


person JoshG    schedule 26.07.2019    source источник


Ответы (1)


В документации есть свойство KmlOptions, которое отключает отображение наложений экрана:

screenOverlays
Тип: boolean
Следует ли отображать наложения на экране. Истина по умолчанию.

Установка его в true удаляет эту легенду.

скриншот полученной карты

var map;

function initMap() {
  map = new google.maps.Map(document.getElementById('map'), {
    zoom: 2,
    mapTypeId: google.maps.MapTypeId.TERRAIN,
    center: {
      lat: 41.876,
      lng: -87.624
    }
  });

}

initMap();

var kmlUrl = 'https://www.weather.gov/source/crh/shapefiles/wwa.kmz';
var kmlOptions = {
  suppressInfoWindows: true,
  preserveViewport: false,
  map: map,
  screenOverlays: false
};
var kmlLayer = new google.maps.KmlLayer(kmlUrl, kmlOptions);
html,
body,
#map {
  height: 100%;
  width: 100%;
  padding: 0px;
  margin: 0px;
}
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCkUOdZ5y7hMm0yrcCQoCvLwzdM6M8s5qk"></script>
<div id="map"></div>

person geocodezip    schedule 26.07.2019
comment
Спасибо. Я как-то пропустил этот вариант. Я ценю вашу помощь. - person JoshG; 26.07.2019
comment
Это отличный вариант API Карт, о котором я еще не знал. Спасибо за совет по геокодированию! - person Christiaan Adams; 26.07.2019