Есть ли способ получить доступ к google.maps.LatLng из node.js?

У меня этот фрагмент кода работал нормально, когда он был частью html-страницы. При запуске поиска он находит достопримечательности в определенном радиусе от пройденных точек.

(index.html)

...
<script src = "https://apis.google.com/js/api.js" type = "text/javascript"></script>
<script src = "https://maps.googleapis.com/maps/api/js?key = {myapikey}&libraries=places&callback=initMap"></script>  
...

(скрипт.js)


function googlePlaces(points) {
   points = [
    [2.627365, 49.215369],
    [2.760591, 49.647163],
    [2.952975, 50.057504],
    [3.344742, 50.280862],
    [3.768293, 50.451306],
    [4.21659, 50.534029]   // for sake of example
var i=0;
var placesOfInterest = [];
for (point of points){
var latLng = new google.maps.LatLng(point[1],point[0])
  var request = {
    location: latLng,
    radius: '10000'
  };

  service = new google.maps.places.PlacesService(map);
  service.nearbySearch(request, 
    function(results,status){
        
        if (status == google.maps.places.PlacesServiceStatus.OK) {  
        placesOfInterest.push(results);
        
        };
      
      
  }); 

  i++;  
  }
  return placesOfInterest;
  }

Теперь я хочу использовать этот код в настройке node.js (без html), чтобы вернуть PlacesOfInterest в виде JSON. Я переместил весь соответствующий код в файл «controller.js» моего API.

Но теперь я получаю ошибки, что «google» не определен.

Что я пробовал

Поэтому я попытался импортировать библиотеки Google таким образом https://github.com/googlemaps/google-maps-services-js, добавив строку

var googleMapsClient = require('@google/maps').createClient({
  key: 'myAPIkey'
});

и изменить мои google ссылки на...

// service.nearbySearch(request, 
    googleMapsClient.nearbySearch(request,

//var latLng = new google.maps.LatLng(point[1],point[0])
var latLng = googleMapsClient.LatLng(point[1],point[0])

но я получаю сообщение об ошибке, что googleMapsClient.LatLng не является функцией. Как я могу импортировать библиотеки Google непосредственно в свой файл js?

Вы хотите загрузить файл Javascript API Карт Google v3. Ваш пример кода не показывает, что вы загружаете это, но вы также должны получить сообщение об ошибке. Вероятно, вы загружаете его с помощью «загрузчика», но этот код не публикуется.

geocodezip 02.06.2019 16:00

Привет, извините, да, в моей HTML-версии я также импортирую другой API (сейчас редактируется). Однако остается вопрос, как я могу использовать эту библиотеку в моем контроллере API.js.

Chris A 02.06.2019 16:11
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
1 704
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы пытаетесь объединить клиент Node.js для сервисов Google Maps и код Google Maps JavaScript API v3 в одном месте. Обратите внимание, что клиентская библиотека NodeJs для веб-служб HTTP была разработана для кода на стороне сервера и, как правило, не будет работать с кодом на стороне клиента Google Maps JavaScript API v3.

Клиентская библиотека NodeJs определяет собственный интерфейс для LatLng, описанный в

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

Interface: LatLng

A latitude, longitude pair. The API methods accept either:

  • a two-item array of [latitude, longitude];

  • a comma-separated string;

  • an object with 'lat', 'lng' properties; or

  • an object with 'latitude', 'longitude' properties.

Итак, в вашем коде NodeJs вы можете сделать следующее

var latLng = [41.3848421,2.1841461];

var latLng = "41.3848421,2.1841461";

var latLng = {lat: 41.3848421, lng: 2.1841461};

var latLng = {latitude: 41.3848421, longitude: 2.1841461};

а затем передать это значение ближайшему методу поиска.

var googleMapsClient = require('@google/maps').createClient({
    key: 'myAPIkey'
});

googleMapsClient.placesNearby({
    location: latLng,
    radius: 10000,
    type: myType
}, function(err, response) {
    ....
});

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

Спасибо за совет! Это очень помогло, теперь я вижу правильный ответ в своем JSON. Чтобы напомнить себе и оставить несколько инструкций для новичков, я смог извлечь только результаты, выполнив if (!err){console.info(response.json.results);} в своей функции.

Chris A 02.06.2019 23:39

Другие вопросы по теме