1

コード:

function setMaps() {
    var geocoder = new google.maps.Geocoder();
    var result = "";

    $('.map_canvas').each(function(){

        geocoder.geocode( {
            'address': $(this).attr('address'), 
            'region': 'de'
        }, function(results, status) {
            if (status == google.maps.GeocoderStatus.OK) {
                result += results[0].geometry.location.lng()+",";
                result += results[0].geometry.location.lat();
            } else {
                result = "Unable to find address: " + status;
            }
            $(this).gmap({ 'center': result });
        });
    });
}

このメソッドは、1 ページに複数のマップを表示する必要があります。

HTML:

<div class="map_canvas" address="Berlin, Zoo">

</div>

問題は、それ$(this).gmap({ 'center': result });が機能しないことです:

Uncaught TypeError: Cannot set property 'position' of undefined

map_canvas オブジェクトをコールバック関数に渡す方法はありますか?

4

1 に答える 1

2

これを試して:

function setMaps() {
    var geocoder = new google.maps.Geocoder();
    var result = "";

    $('.map_canvas').each(function(){
       var _this = $(this); // <------ here
        geocoder.geocode( {
            'address': $(this).attr('address'), 
            'region': 'de'
        }, function(results, status) {
            if (status == google.maps.GeocoderStatus.OK) {
                result += results[0].geometry.location.lng()+",";
                result += results[0].geometry.location.lat();
            } else {
                result = "Unable to find address: " + status;
            }
            _this.gmap({ 'center': result }); // <---- and here
        });
    });
}
于 2012-09-09T11:14:13.710 に答える