Проблема Google Maps с геокодером - PullRequest
0 голосов
/ 22 июля 2011

Смысл в том, чтобы указать маркеры из файла JSON, но если текущий json, не имеет значений lat и lng, он должен его вычислить, но он не работает

//For example when
item.county = 'Orust'
//and 
item.region = 'Bohuslän'

Почему это?

if(lat == null)
            {
                geocoder.geocode({ 'address': item.county+', '+item.region}, function(result, status) {
                if (status == google.maps.GeocoderStatus.OK) {
                    if(result[0])
                    {
                        latlng = result[0].geometry.location
                    }
                }
                });

Я что-то пропустил?

Ответы [ 2 ]

0 голосов
/ 23 июля 2011

Запрос к геокодеру выполняется асинхронно.Вы не можете получить доступ к vriable, который назначен внутри обратного вызова из внешнего кода.На самом деле вы могли бы, но это будет неопределенным.

0 голосов
/ 22 июля 2011

Сначала проверьте, все ли работает как положено в обратном вызове.Для этого измените это:

latlng = result[0].geometry.location;

На это:

console.log(result[0].geometry.location);

(Вы также можете просто добавить console.log над назначением latlng вместо его изменения. На самом деле, это, вероятно, лучше.)

Если получающееся сообщение в вашей консоли JavaScript выглядит как объект latlng, то проблема, скорее всего, связана с областью видимости - другими словами, latlng вне обратного вызоване то же самое, что latlng внутри обратного вызова.

Если полученное сообщение в консоли JavaScript не похоже на объект latlng, то проблема заключается в самом обратном вызове.Проверьте, получаете ли вы какие-либо результаты вообще, поместив туда, где вы поставили последний console.log() выше:

console.log(result);

Если эти console.log команды никогда не запускаются и ничего не появляется в вашей консоли JavaScript, тогдастатус, возвращаемый из geocoder.geocoder(), не является OK, и вам нужно добавить некоторую обработку ошибок в обратный вызов, чтобы увидеть, что происходит.

...