#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 .