API v3を使用してGoogleマップを設定しました。マップには、インフォボックスが添付された多数のマーカーがあります。私は、地図の外に検索ボックスを設定して、ユーザーが住所を入力して距離に基づいて最も近いマーカーを返すようにしたいと考えています(半径検索など)。Google Maps API - プレイスを使用してマーカーの半径を検索しますか?
APIドキュメントから、私はPlacesサービスを使用する必要があると思います。誰かが私を正しい方向に向けることができますか?
API v3を使用してGoogleマップを設定しました。マップには、インフォボックスが添付された多数のマーカーがあります。私は、地図の外に検索ボックスを設定して、ユーザーが住所を入力して距離に基づいて最も近いマーカーを返すようにしたいと考えています(半径検索など)。Google Maps API - プレイスを使用してマーカーの半径を検索しますか?
APIドキュメントから、私はPlacesサービスを使用する必要があると思います。誰かが私を正しい方向に向けることができますか?
APIを使用して半径検索を行うには、Geometry Librarygoogle.maps.geometry.spherical.computeDistanceBetweenメソッドを使用して、各マーカーとジオコードされた結果の間の距離をアドレスから計算します。その距離が要求された半径よりも小さい場合はマーカーを表示し、それ以外の場合は非表示にします。
コードは想定していますgoogle.maps.Markersの
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);
}
});
}
あなたをthからの結果を探している場合はPlaces APIを使用する必要がありますe Places API。独自のマーカーを返す場合は、Google Maps API v3を使用してマーカーを実装する必要があります。 – geocodezip
既存のコードはどのように見えますか? – geocodezip