Google Maps Geocode неожиданное местоположение свойства - PullRequest
0 голосов
/ 03 мая 2019

Я пытаюсь настроить геокодирование для моего приложения vue.js. Я не использую стороннюю библиотеку, только карты Google, установленные через npm.

При вызове метода геокодирования выдается сообщение о том, что местоположение свойства является неожиданным. Я пробовал "location", "latlng", координаты и так далее. Долгота и широта происходят от объекта navigator.geolocation.

Вот часть моего скрипта установки:

Vue.component('catalog', require('./components/Catalog'));
Vue.component('address-autocomplete', require('./components/AddressAutoComplete'));
window.googleMapsClient = require('@google/maps').createClient({
    key: "MY_API_KEY"
});

И мой Vue-компонент:

getLocationFromGeoData() {
    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(
            this.setLocation,
            this.showError
        );
    } else {
        showLocationError("Geolocation wird nicht unterstützt!");
    }
},
setLocation(position) {
    var self = this;

    this.location.latitude = position.coords.latitude;
    this.location.longitude = position.coords.longitude;

    var latLng = {
        lat: parseFloat(this.location.latitude),
        lng: parseFloat(this.location.longitude)
    };

    googleMapsClient.geocode({'location': latLng}).asPromise()
        .then((response) => {
            self.location.address = results[1].formatted_address;
        }).catch((err) => {
            showLocationError(err);
        });
},

Ответы [ 2 ]

0 голосов
/ 03 мая 2019

Обратите внимание, что вы пытаетесь разрешить координату по адресу. Этот процесс обычно называется обратное геокодирование . Это означает, что вы должны использовать метод .reverseGeocode(query, callback) вместо .geocode(query, callback) метода.

Ваш код должен быть изменен на что-то похожее на

var latLng = {
    lat: parseFloat(this.location.latitude),
    lng: parseFloat(this.location.longitude)
};

googleMapsClient.reverseGeocode({'latlng': latLng}).asPromise()
    .then((response) => {
        self.location.address = results[1].formatted_address;
    }).catch((err) => {
        showLocationError(err);
    });

Для получения дополнительной информации см. Документацию клиентской библиотеки веб-служб Карт для Node.js по адресу

.

https://googlemaps.github.io/google-maps-services-js/docs/GoogleMapsClient.html

Надеюсь, это поможет!

0 голосов
/ 03 мая 2019

geocode метод класса google.maps.Geocoder - https://developers.google.com/maps/documentation/javascript/geocoding.

const geocoder = new google.maps.Geocoder;
geocoder.geocode({'location': latlng}, function(results, status) { // code
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...