Я пытаюсь использовать JavaScript API Google maps, чтобы нарисовать линию между двумя точками.Две точки должны быть геокодированы (преобразованы в объекты google.maps.LatLong), прежде чем их можно будет использовать для рисования линии.
Функция геокодирования - это codeAddress, и когда она возвращает ее, она вызывает функцию обратного вызова, которая добавляетновый latlong в глобальный массив, называемый точками.По какой-то причине значения, добавленные к точкам, не сохраняются за пределами массива.Я относительно новичок в JavaScript, поэтому я не могу сказать, что может быть не так, любые мысли будут оценены!
var points = new Array();
function addGeocodedLatLongToGlobalList(address) {
points.push(address);
alert("added a point " + points[0]); // correctly outputs latlong object
}
function codeAddress(address) {
geocoder = new google.maps.Geocoder();
geocoder.geocode({ 'address': address, }, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
addGeocodedLatLongToGlobalList(results[0].geometry.location);
} else {
alert("Geocode was not successful for the following reason: " + status);
}
});
}
function drawLine(address1, address2, color) {
codeAddress(address1);
codeAddress(address2);
alert("there is a point " + points[0]); //now the points[0] value is undefined
...