Поиск мест в Google Maps API v3 -Передать другой параметр в функцию обратного вызова

Я использую API мест Google Maps v3 для возврата ряда «типов» мест, каждое из которых представлено отдельным маркером на карте..

Я создаю объект google.maps.places.PlacesService, а затем вызываю метод «search» один раз для каждого типа места. Каждый раз я использую другую функцию обратного вызова (второй параметр «поиск» ), потому что мне нужно выбрать разные MarkerImage для каждого типа.

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-адрес маркера в функцию обратного вызова? Тогда мне понадобится только один обратный вызов...

10
задан howlee 4 May 2012 в 00:09
поделиться