5
我已經使用API v3建立了一個Google Map。地圖上有許多附有信息框的標記。我正在尋找在地圖之外設置搜索框以供用戶輸入地址,然後根據距離返回最近的標記(例如半徑搜索)。Google Maps API - Radius使用Places來搜索標記?
從API文檔,我想我需要使用的地方服務。任何人都可以將我指向正確的方向嗎?
我已經使用API v3建立了一個Google Map。地圖上有許多附有信息框的標記。我正在尋找在地圖之外設置搜索框以供用戶輸入地址,然後根據距離返回最近的標記(例如半徑搜索)。Google Maps API - Radius使用Places來搜索標記?
從API文檔,我想我需要使用的地方服務。任何人都可以將我指向正確的方向嗎?
要使用API進行半徑搜索,請使用Geometry Librarygoogle.maps.geometry.spherical.computeDistanceBetween方法來計算每個標記與地址的地理編碼結果之間的距離。如果該距離小於請求的半徑,請顯示標記,否則將其隱藏。
代碼假定:
google.maps.Map對象調用地圖
function codeAddress() {
var address = document.getElementById('address').value;
var radius = parseInt(document.getElementById('radius').value, 10)*1000;
geocoder.geocode({ 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
map.setCenter(results[0].geometry.location);
var marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location
});
if (circle) circle.setMap(null);
circle = new google.maps.Circle({center:marker.getPosition(),
radius: radius,
fillOpacity: 0.35,
fillColor: "#FF0000",
map: map});
var bounds = new google.maps.LatLngBounds();
for (var i=0; i<gmarkers.length;i++) {
if (google.maps.geometry.spherical.computeDistanceBetween(gmarkers[i].getPosition(),marker.getPosition()) < radius) {
bounds.extend(gmarkers[i].getPosition())
gmarkers[i].setMap(map);
} else {
gmarkers[i].setMap(null);
}
}
map.fitBounds(bounds);
} else {
alert('Geocode was not successful for the following reason: ' + status);
}
});
}
您如果您正在查找結果,則需要使用Places API e Places API。如果您希望返回自己的標記,則需要使用Google Maps API v3實現該標記。 – geocodezip
你現有的代碼是什麼樣的? – geocodezip