在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)以将placeOfInterest作为JSON返回。我已将所有相关代码移到我API的“ controller.js”文件中。
但是现在我得到的错误信息是“ google”未定义。
所以我尝试以这种方式https://github.com/googlemaps/google-maps-services-js导入google库,并添加一行
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文件中?
答案 0 :(得分:1)
您尝试在一个地方混合使用Google Maps Services的Node.js客户端和Google Maps JavaScript API v3代码。请注意,用于HTTP Web服务的NodeJs客户端库是为服务器端代码设计的,通常无法与客户端Google Maps JavaScript API v3中的代码一起使用。
NodeJs客户端库为
中描述的LatLng定义了自己的接口。https://googlemaps.github.io/google-maps-services-js/docs/LatLng.html
接口:LatLng
经度和纬度对。 API方法接受以下任一方法:
[纬度,经度]的两个项目的数组;
用逗号分隔的字符串;
具有'lat','lng'属性的对象;或
具有“纬度”和“经度”属性的对象。
因此,在您的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) {
....
});
我希望这会有所帮助!