在Excel中,我有街道地址和Lat + Long,并尝试从Google Places API网络服务获取PlaceID。我研究了Geocoding API和Places API并做了一些VBA测试。获取特定地点的PlaceID的唯一方法是进行文本搜索或附近搜索。
有没有办法从你直接在VBA中的地址获取它? 我见过一个使用JavaScript获取PlaceID的演示网站,但不知道如何将JavaScript合并到Excel + VBA中。
答案 0 :(得分:0)
听起来像你想要NearbySearch(不知道你为什么不认为这能给你你想要的东西):
“附近搜索”允许您按关键字或类型搜索指定区域内的地点。附近搜索必须始终包含一个位置,可以通过以下两种方式之一指定:
- a LatLngBounds。
- 一个圆形区域,定义为位置属性的组合 - 指定圆的中心为LatLng对象 - 和半径,以米为单位。
通过调用PlacesService附近的Search()方法启动附近搜索位置,该方法将返回PlaceResult对象的数组。
代码段:
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;