谷歌地图api V3这是添加ajax后getCenter()的未定义错误

时间:2015-11-13 16:56:23

标签: javascript jquery ajax google-maps google-maps-api-3

我试图在拖动地图后通过ajax更新搜索结果。 这是我正在使用的代码。

function initMap(){
var locations = [];
var count = 0;
$('.oneListing').each(function(){
    locations[count] = {title:$(this).html(),lat: $(this).data('lat'), lng: $(this).data('lng')};
    count ++;
})

window.map = new google.maps.Map(document.getElementById('map_canvas'), {
    mapTypeId: google.maps.MapTypeId.ROADMAP
});

var infowindow = new google.maps.InfoWindow();

var bounds = new google.maps.LatLngBounds();

for (i = 0; i < locations.length; i++) {
    marker = new google.maps.Marker({
        position: new google.maps.LatLng(locations[i]['lat'], locations[i]['lng']),
        map: map
    });

    bounds.extend(marker.position);

    google.maps.event.addListener(marker, 'click', (function (marker, i) {
        return function () {
            infowindow.setContent(locations[i]['title']);
            infowindow.open(map, marker);
        }
    })(marker, i));
}

map.fitBounds(bounds);

var listener = google.maps.event.addListener(map, "idle", function () {
    map.setZoom(4);
    google.maps.event.removeListener(listener);
});

    map.addListener('dragend', function() {
        var zoom = map.getZoom();
        var center = map.getCenter();
        updatesearch(center, zoom);
    });
}
function updatesearch(center, zoom){
    jQuery.ajax({
        url: '/searches/update',
        type: 'post',
        data: {zoom: zoom,center: center},
        success: function(data){
            alert(data)
        }            
    })
}

在此之后,我收到错误,说TypeError: this is undefined它在getCenter()函数上发生了。 什么可能导致这种错误,我该怎么做才能避免它。 我正在使用jquery v1.11.1 如果需要其他信息,请告诉我。 只有在我尝试对我的后端进行ajax调用以获取新项目之后才会出现此错误。否则getCenter()返回正确的结果。

1 个答案:

答案 0 :(得分:0)

我弄清楚问题是什么。 getCenter()返回的对象不是字符串,这就是为什么在ajax的数据中使用变量后我得到了这个错误。 sollution是在中心变量上调用lat()和lng()函数,然后将其传递给ajax。