Не можете добавить полилинию на карту после нажатия ее координат, которые были получены с помощью отдельного запроса 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 ответа
Попробуй это:
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");
});
*/
}