有没有办法从node.js访问google.maps.LatLng?

时间:2019-06-02 13:24:44

标签: node.js google-maps google-maps-api-3

在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返回。我已将所有相关代码移到我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文件中?

1 个答案:

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

我希望这会有所帮助!