Не можете добавить полилинию на карту после нажатия ее координат, которые были получены с помощью отдельного запроса AJAX?

  function initialize() {

    var myOptions = {
    center: new google.maps.LatLng(45.652988, 25.611792),
    zoom: 12,
    mapTypeId: google.maps.MapTypeId.SATELLITE
    };

    var map = new google.maps.Map(document.getElementById("map_canvas"),myOptions);

    var lines = new google.maps.Polyline({
                strokeColor: '#FF0000',
                strokeOpacity: 0.5,
                strokeWeight: 2,
                editable: true
                });

    nline = function setPolyline(points) {
    var path = lines.getPath();
    path.clear();
    path.push(points);
    lines.setMap(map);
    }

    google.maps.event.addListener(map, 'click', function() {
    var target = document.getElementById("info_panel");
    target.style.display = "none";
    });

    /*
    google.maps.event.addListener(line, 'click', function() {
    alert("you clicked polyline");
    });
    */
  }

После выполнения XMLHttpRequest из базы данных SQL, другая функция вызывает функцию setPolyline (которая находится внутри функции инициализации карты, поскольку переменные "map" и "lines" являются только локальными, а не глобальными), передавая в качестве аргумента массив значений типа latlng.

Функция setPolyline берет этот массив, очищает путь полилинии (называемой "линии"), выталкивает массив latlng в путь, и при переходе к инструкции setmap просто не может вообще ничего сделать...

Есть ли проблема с вложением или что?... помогите, пожалуйста, я пытался выяснить это в течение последних 6 часов...

2 ответа

Ты звонишь lines.setPath(path) в любом месте?

Попробуй это:

 function initialize() {

    var myOptions = {
    center: new google.maps.LatLng(45.652988, 25.611792),
    zoom: 12,
    mapTypeId: google.maps.MapTypeId.SATELLITE
    };

    var map = new google.maps.Map(document.getElementById("map_canvas"),myOptions);

    var lines = new google.maps.Polyline({
                strokeColor: '#FF0000',
                path: linepth,
                strokeOpacity: 0.5,
                strokeWeight: 2,
                editable: true
                });

    nline = function setPolyline(points) {
    var linepth= [];
    var path = lines.getPath();
    path.clear();
//    path.push(points);
    linepth.push(points);
    lines.setMap(map);
    }

    google.maps.event.addListener(map, 'click', function() {
    var target = document.getElementById("info_panel");
    target.style.display = "none";
    });

    /*
    google.maps.event.addListener(line, 'click', function() {
    alert("you clicked polyline");
    });
    */
  }
Другие вопросы по тегам