8
Googleマップの場所API v3を使用して、地図上に別のマーカーで表されたいくつかの種類の場所を返します。GoogleマップAPI v3の場所検索 - 別のパラメータをコールバック関数に渡す
私はgoogle.maps.places.PlacesServiceオブジェクトを作成し、プレースタイプごとに「検索」メソッドを1回呼び出します。それぞれのタイプに対して異なるMarkerImageを選択する必要があるため、毎回異なるコールバック関数(「検索」の2番目のパラメータ)を使用します。
ここvar address = "97-99 Bathurst Street, Sydney, 2000";
geocoder.geocode({ 'address': address }, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
var location = results[0].geometry.location;
map.setCenter(location);
var marker = new google.maps.Marker({
map: map,
position: location
});
infowindow = new google.maps.InfoWindow();
var service = new google.maps.places.PlacesService(map);
// banks
var req_bank = { location: location, radius: 500, types: ['bank'] };
service.search(req_bank, banks);
// bars
var req_bar = { location: location, radius: 500, types: ['bar'] };
service.search(req_bar, bars);
// car parks
var req_parking = { location: location, radius: 500, types: ['parking'] };
service.search(req_parking, carparks);
} else {
alert("Geocode was not successful for the following reason: " + status);
}
});
はMarkerImageのみが異なるコールバック関数、以下のとおりです。
function banks(results, status) {
if (status == google.maps.places.PlacesServiceStatus.OK) {
for (var i = 0; i < results.length; i++) {
createMarker(results[i], new google.maps.MarkerImage("/images/bank.png", null, null));
}
}
}
function bars(results, status) {
if (status == google.maps.places.PlacesServiceStatus.OK) {
for (var i = 0; i < results.length; i++) {
createMarker(results[i], new google.maps.MarkerImage("/images/bar.png", null, null));
}
}
}
function carparks(results, status) {
if (status == google.maps.places.PlacesServiceStatus.OK) {
for (var i = 0; i < results.length; i++) {
createMarker(results[i], new google.maps.MarkerImage("/images/parking.png", null, null));
}
}
}
このコードが100%に動作しますが、私はそれぞれ異なる場所タイプのコールバックの重複を避けるしたいと思います(そこになります約10である)。 マーカーURLをコールバック関数に渡す方法はありますか?それから私だけ...後約
素晴らしい...私は後に:) – howlee
DOYただけで何を!私は知っていたはずです。ありがとう! –