Я создал Gist с полным примером здесь: https://gist.github.com/890998
Мое объяснение следующее ...
Вы могли бы создать объект javascript, который мог бы хранить результаты как свойство expando. Затем после завершения каждого запроса геокодирования сохраните результат, а затем вызовите функцию для выполнения вычисления.
Добавить переменную, в которой вы можете сохранить результаты как свойства expando
var geoResults = {};
Вместо того, чтобы иметь две почти идентичные функции, которые выполняют геокодирование, измените его так, чтобы он принимал 'id' ввода адреса. Мы можем использовать этот параметр id
в качестве имени свойства для нашего объекта geoResults.
function codeAddress(id) {
var address = document.getElementById(id).value;
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
map.setCenter(results[0].geometry.location);
var marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location
});
// store the results in the geoResults object
geoResults[id] = results[0].geometry.location;
doCalculation();
} else {
alert("Geocode was not successful for the following reason: " + status);
}
});
}
Теперь в нашей функции doCalculation () мы можем просто проверить, было ли геокодировано оба адреса, и если да, то делать с результатами все, что вы хотите.
function doCalculation() {
if (typeof geoResults.address1 === "object"
&& typeof geoResults.address2 === "object") {
// Yay.. do something now.
// geoResults.address1 is a LatLng() object.
// geoResults.address2 is a LatLng() object.
}
}
Нам просто нужно изменить две вещи с вашим HTML.
- Убедитесь, что у вас есть уникальные атрибуты
id
. адрес1 и адрес2
- Измените атрибут
onclick
, чтобы передать идентификатор в функцию codeAddress
в качестве параметра.
Вот как это выглядит
<body onload="initialize()">
<div>
<input id="address1" type="textbox" value="" style=" width:800px;height:30px;font-size:10px;">
<input type="button" value="Geocode" onclick="codeAddress('address1')">
</div>
<div>
<input id="address2" type="textbox" value="" style=" width:800px;height:30px;font-size:10px;">
<input type="button" value="Geocode" onclick="codeAddress('address2')">
</div>
<div id="map_canvas" style="height:90%;top:80px"></div>
</body>