У меня этот фрагмент кода работал нормально, когда он был частью 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>
...
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?
Привет, извините, да, в моей HTML-версии я также импортирую другой API (сейчас редактируется). Однако остается вопрос, как я могу использовать эту библиотеку в моем контроллере API.js.





Вы пытаетесь объединить клиент 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);} в своей функции.
Вы хотите загрузить файл Javascript API Карт Google v3. Ваш пример кода не показывает, что вы загружаете это, но вы также должны получить сообщение об ошибке. Вероятно, вы загружаете его с помощью «загрузчика», но этот код не публикуется.