#javascript #google-maps-api-3
Вопрос:
Работа с этим руководством от Google: https://developers.google.com/codelabs/maps-platform/google-maps-simple-store-locator
Код Github здесь: https://github.com/googlecodelabs/google-maps-simple-store-locator
файл: app.js функции: initMap(), calculateDistances();
Моя конкретная проблема заключается в том, что свойства latlng где-то теряются. Карта загружается и загружаются все точки карты. Однако, когда я использую поиск / автозаполнение карты.данные передаются в качестве параметра через эту функцию (строка 218)
const rankedStores = await calculateDistances(map.data, originLocation);
и анализируется с помощью этой функции (строка 234)
async function calculateDistances(data, origin) {
const stores = [];
const destinations = []
// Build parallel arrays for the store IDs and destinations
data.forEach((store) => {
const storeNum = store.getProperty('storeid');
const storeLoc = store.getGeometry().get();
console.log(storeLoc);
stores.push(storeNum);
destinations.push(storeLoc);
});
в консоли.в журнале геометрия не отображается. объекты и соответствующие свойства latlng просто не соответствуют фактическим координатам. когда я просматриваю хранилище в консоли. они отображаются так, как должны. Я проверил, что координаты существуют в jSON, и они отображают точки, доказывающие, что map.data.loadGeoJSON работает правильно. Я просто схожу с ума, пытаясь найти, куда делись координаты и как обеспечить их передачу в функцию calculateDistances . Любая помощь приветствуется.
Скриншот B:
Комментарии:
1. Что вы подразумеваете под «координатами, которых там нет»? Что вы получите, если сделаете
console.log(storeLoc.toUrlValue(6))
это?2. @geocodezip Я получил координаты на скриншоте B выше. Скриншот A является примером того, что я имел в виду, когда значения координат в объекте отсутствовали.
3. Координаты есть. Вам нужно вызвать
lat()
функцию, чтобы получить широту,lng()
функцию, чтобы получить долготу (илиtoUrlValue()
получить разделенную запятыми строку, содержащую оба).4. @geocodezip подтверждено. console.log(storeLoc.lat()) действительно распечатывается, поэтому это отвечает на вопрос. Не могли бы вы, пожалуйста, написать ответ, чтобы я мог отметить как правильный?
Ответ №1:
Чтобы получить координаты из google.maps.Для объекта LatLng (который возвращается store.getGeometry().get()), используйте .lat()
функцию для широты, .lng()
функцию для долготы или .toUrlValue()
функцию для строки, разделенной запятыми, содержащей оба.
async function calculateDistances(data, origin) {
const stores = [];
const destinations = []
// Build parallel arrays for the store IDs and destinations
data.forEach((store) => {
const storeNum = store.getProperty('storeid');
const storeLoc = store.getGeometry().get();
console.log(storeLoc.toUrlValue(6));
stores.push(storeNum);
destinations.push(storeLoc);
});