Добавление слоя KML в Google map API 3

#javascript #google-maps-api-3

#javascript #google-maps-api-3

Вопрос:

Я пытаюсь сделать так, чтобы, когда пользователь выбирает что-то из формы и нажимает «Отправить», он добавлял все это на карту Google. Добавление маркеров работает отлично, и добавление события прослушивания для добавления полилиний также работает отлично. По какой-то причине файл KML не будет правильно накладываться. Хотя я не уверен, что делаю это правильно. Значение из формы выводится корректным эхом, поэтому я знаю, что данные доходят, по крайней мере, до функции map. Вот код, который не работает:

 window.onload = function() {
        // Creating an object literal containing the properties
        // we want to pass to the map
        var options = {
            zoom: 5,
            center: new google.maps.LatLng(39.09, -95.71),
            mapTypeId: google.maps.MapTypeId.ROADMAP
        };
        // Creating the map
        var map = new google.maps.Map(document.getElementById('map'), options);
        // Creating a LatLngBounds object
        var bounds = new google.maps.LatLngBounds();

        // Creating an empty MVCArray
        var route = new google.maps.MVCArray();

        var polyline = new google.maps.Polyline({
            path: route,
            strokeColor: "#ff0000",
            strokeOpacity: 0.6,
            strokeWeight: 5
        });      
        polyline.setMap(map);
        google.maps.event.addListener(map, 'click', function(e) {
            var path = polyline.getPath();
            path.push(e.latLng);
        });
        kmlFiles.setMap(map);
  

вот код, который устанавливает переменную kmlFiles:

 kmlFiles = new google.maps.KmlLayer(<?php echo $_POST['kmlFile']; ?>);
  

Комментарии:

1. На мой взгляд, код выглядит нормально. Что именно пошло не так? Вам действительно нужно использовать файл kml?

Ответ №1:

Я подозреваю, что вам не хватает кавычек вокруг URL-адреса, который вы передаете KmlLayer, например

var layer = новый слой Google.maps.KmlLayer(http://www.site.com/foo.kml );

недопустимо при

var layer = новый google.maps.KmlLayer(«http://www.site.com/foo.kml «);

допустимо.