Использование API google places в node.js серверная среда

#javascript #node.js

#javascript #node.js

Вопрос:

это мой первый node.js приложение, в котором я буду использовать javascript на сервере, ранее я использовал javascripe API google places в клиенте, например:

 async codeAddressFromList(address)
    {
        const self = this;
        this.address = address;
    
        return self.geocoderService.geocode( { 'address': address}, function(results, status)
        {
            if (status == 'OK')
            {
                self.map.setCenter(results[0].geometry.location);
                self.calculateNewSquareVertex(results[0].geometry.location);
                self.drawRects();
            } 
            else
            {
                alert('Geocode was not successful for the following reason: '   status);
            }
        });
    },
  

Мне было интересно, как лучше всего использовать API Google places в node.js .

Поскольку узел на сервере является javascript, смогу ли я использовать javascript API на сервере? Я видел, как некоторые люди использовали axios для выполнения запросов и построения строки URL, например:

 path: '/maps/api/place/nearbysearch/json?location='   latitude   ','   longitude   'amp;radius='   radius   'amp;type=restaurantamp;key=[YOUR API KEY]',
  

Я также нашел об этой библиотеке:

https://github.com/googlemaps/google-maps-services-js

Но я не уверен, стоит ли подавать в суд на библиотеку, какой более простой, проверенный в боях способ сделать это?

Можете ли вы, ребята, опубликовать некоторые из своих node.js примеры API google places?

Комментарии:

1. Связь с Google осуществляется через http-запросы к серверу Google. С технической точки зрения не имеет значения, выполняет ли запрос браузер или механизм узла. Используемая вами библиотека представляет собой оболочку вокруг объекта XMLHttpRequest браузера, в node это будет http api . Это означает, что если вы не сделаете запрос самостоятельно (путем создания URL-адреса и использования, например, axios на сервере), вы должны использовать библиотеку узлов.

Ответ №1:

Вы можете использовать axios в качестве http-клиента для этой цели, это упрощает использование Google maps api.

Я добавил пример использования функции computeOffset из модуля spherical-geometry-js.

Вот пример:

 const API_KEY = '<your_api_key>'
const axios = require('axios');
const { computeOffset } = require ('spherical-geometry-js');

async function geocode(address) {
    console.log(`Getting result for address ${address}...`);
    const response = await axios.get(`https://maps.googleapis.com/maps/api/geocode/json?address=${encodeURI(address)}amp;key=${API_KEY}`)
    return response.data.results[0];
}

async function testGeocode() {
    const address = "1142-1146 Alta Vista Pl, Brentwood, CA 94513, USA";
    const result = await geocode(address);
    console.log("Latitude:", result.geometry.location.lat);
    console.log("Longitude:", result.geometry.location.lng);
    const { lat, lng } = result.geometry.location;
    // Go 100 meters north
    console.log("Compute offset result:", JSON.stringify(computeOffset({ lat, lng }, 100, 0)));
    console.log("Complete result:", result);
}

testGeocode();
  

Комментарии:

1. Я думаю, что я мог бы использовать это, единственное, в чем я сомневаюсь, это то, как я могу сделать: google.maps.geometry.spherical.computeOffset, в моем node.js У меня нет доступа к объекту Google, поэтому я не могу сделать: new google.maps. LatLng()

2. Я не знаю, можете ли вы заставить функцию google.maps.geometry.spherical.computeOffset работать с использованием кода на стороне сервера. Но есть библиотека, которая может это сделать: github.com/NotWoods/spherical-geometry-js .