Я новичок в этом, но у меня есть карта Google V3, которая загружается из информации о геокоде браузера W3C пользователя, и я извлекаю страну, штат и город из объекта геокодирования и обновляю поля ввода.Если пользователь вводит адрес улицы, я хочу геокодировать его через Google, изменить map.setCenter и setZoom и отобразить обновленную карту.Когда это сработает, я хочу добавить маркер и информационное окно.Несмотря на часы исследований и испытаний, я не могу получить геокод и обновление для работы.Похоже, что инструмент разработчика в Chrome указывает на то, что выполнение прекращается / завершается с ошибкой в строке geocoder.geocode, которая показана жирным шрифтом ниже.Вот соответствующий код.
var map, geocoder, marker, infowindow; //global variables
function initializeMap() {
// Try W3C Geolocation to geolocate desktop user
//initialize Google map, geolocate desktop user, and display after page loads
//find country, state, and city for the user's location - this all works
}
window.onload = initializeMap;
//change the Google Map after a user enters a street address
$("#streetAddress").blur(function() {
//if state, city and street address locations are present
if ( $(this).val().length > 0 && $("#state").val().length > 0 && $("#city3").val().length > 0 ) {
var gAddress = [$(this).val() + ", " + $("#city3").val() + ", " + $("#state").val()] ;
//get coordinates of this address
//if no geocode object exists, create one
if (!geocoder) {
geocoder = new google.maps.Geocoder(); //create Geocoder object else use existing one from initializeMap() ?
}
//create a GeocoderRequest object with user's street address
var geoCoderRequest = {address: gAddress}
//make a Geocoder request
geocoder.geocode( geoCoderRequest, function(results, status) { **//this line fails**
//check if status is OK
if ( status === google.maps.GeocoderStatus.OK) {
//update center of existing map on location returned for this address
map.setCenter(results[0].geometry.location);
map.setZoom(14);
}
});
} else {
return; //no action if gAddress is incomplete
}
});