Есть ли способ получить доступ к google.maps.LatLng из node.js? - PullRequest
0 голосов
/ 02 июня 2019

У меня был этот кусок кода, работающий нормально, когда часть 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>  
...

(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), чтобы вернуть placeOfInterest в виде 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?

1 Ответ

1 голос
/ 02 июня 2019

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

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

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

Интерфейс: LatLng

Пара широты и долготы,Методы API принимают либо:

  • массив из двух элементов [широта, долгота];

  • строка, разделенная запятыми;

  • объект со свойствами 'lat', 'lng';или

  • объект со свойствами 'широта', 'долгота'.

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

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) {
    ....
});

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...