获取特定纬度+经度或街道地址的placeid

时间:2015-05-23 18:21:31

标签: excel vba google-maps excel-vba google-places-api

在Excel中,我有街道地址和Lat + Long,并尝试从Google Places API网络服务获取PlaceID。我研究了Geocoding API和Places API并做了一些VBA测试。获取特定地点的PlaceID的唯一方法是进行文本搜索或附近搜索。

有没有办法从你直接在VBA中的地址获取它? 我见过一个使用JavaScript获取PlaceID的演示网站,但不知道如何将JavaScript合并到Excel + VBA中。

1 个答案:

答案 0 :(得分:0)

听起来像你想要NearbySearch(不知道你为什么不认为这能给你你想要的东西):

  

“附近搜索”允许您按关键字或类型搜索指定区域内的地点。附近搜索必须始终包含一个位置,可以通过以下两种方式之一指定:

     
      
  • a LatLngBounds。
  •   
  • 一个圆形区域,定义为位置属性的组合 - 指定圆的中心为LatLng对象 - 和半径,以米为单位。
  •   
     

通过调用PlacesService附近的Search()方法启动附近搜索位置,该方法将返回PlaceResult对象的数组。

fiddle

代码段:



var map;
var infowindow;

function initialize() {
  var pyrmont = new google.maps.LatLng(-33.8665433, 151.1956316);

  map = new google.maps.Map(document.getElementById('map-canvas'), {
    center: {lat:40.689249,lng:-74.0445},
    zoom: 15
  });

  var request = {
      location: {lat:40.689249,lng:-74.0445},
    radius: 10
  };
  infowindow = new google.maps.InfoWindow();
  var service = new google.maps.places.PlacesService(map);
  service.nearbySearch(request, callback);
}

function callback(results, status) {
  if (status == google.maps.places.PlacesServiceStatus.OK) {
    for (var i = 0; i < results.length; i++) {
      createMarker(results[i]);
    }
  }
}

function createMarker(place) {
  var placeLoc = place.geometry.location;
  var marker = new google.maps.Marker({
    map: map,
    position: place.geometry.location
  });

  google.maps.event.addListener(marker, 'click', function() {
    infowindow.setContent(place.name+"<br>"+place.place_id);
    infowindow.open(map, this);
      document.getElementById('placeId').innerHTML = place.name+"<br>"+marker.getPosition().toUrlValue(6)+"<br>"+place.place_id;
  });
}

google.maps.event.addDomListener(window, 'load', initialize);
&#13;
html, body, #map-canvas {
    height: 500px;
    width: 500px;
    margin: 0px;
    padding: 0px
}
&#13;
<script src="https://maps.googleapis.com/maps/api/js?libraries=places"></script>
<div id="placeId"></div>
<div id="map-canvas" style="border: 2px solid #3872ac;"></div>
&#13;
&#13;
&#13;