我的google地图对象的代码如下:
geocoder.geocode({ 'address': googleAddress}, function (results, status){
if (status == google.maps.GeocoderStatus.OK) {
var mapOptions = { zoom: 16, center:results[0].geometry.location, mapTypeId:google.maps.MapTypeId.ROADMAP}
map = new google.maps.Map(element[0], mapOptions);
var marker1 = new google.maps.Marker({
position: results[0].geometry.location,
map: map,
title: googleAddress
});
google.maps.event.addDomListener(window, "resize", function() {
google.maps.event.trigger(map, "resize");
map.setCenter(results[0].geometry.location);
});
}
})
此元素在"显示内部开始:无" div,所以当我点击click事件来打开div时,我也会触发一个窗口事件' resize' (要加载整个地图......您可以在其他地方阅读有关为什么必须触发调整大小的问题):
showMap = function(){
if ($('#map').hasClass('hide')){
$('#map').removeClass('hide');
$window.dispatchEvent(new Event('resize'));
}
else{
$('#map').addClass('hide');
}
};
这个工作就像在完整div中显示地图一样,问题是我的中心是错误的。我有一个标记位于传入的地址(验证标记位于正确的位置),但标记在屏幕外(就在左上角)。如果缩小1次单击,则标记位于左上角。
我也尝试过(没有运气)
google.maps.event.addDomListener(window, "resize", function() {
var center = map.getCenter();
map.setCenter(center);
});
答案 0 :(得分:0)
当您将地图置于地理编码结果的中心时,它的大小为零,将中心放在左上角。运行此功能时:
google.maps.event.addDomListener(window, "resize", function() {
var center = map.getCenter();
map.setCenter(center);
});
你没有改变中心。如果您希望将地理编码结果放在中心,请保留对其的引用(或标记),并在触发地图调整大小事件后将该位置放在中心位置。