我在 Google地图中使用this jQuery plugin。
我有一个小表单,用于在地图上过滤我的标记。
使用插件的$('#map_canvas').gmap('addMarker', {...})
函数创建标记,并且在创建具有该函数的标记时我可以传递的属性之一是bounds:true
。这样做 - 当创建并显示所有标记时,地图应放大地图上所有标记的边界。
问题 - 出于某种原因,当我过滤(按提交按钮)时,地图不会放大到界限新标记。它只是保持原样。
为什么?如何使其放大到新标记的边界?
的jQuery :
// when map is initialized, plot all the markers
$('#map_canvas').gmap(mapOptions).bind('init', function(){
$.getJSON('myscript.php', function(json){
var theMarkers = json;
$.each(theMarkers, function(i, val) {
$('#map_canvas').gmap('addMarker', { 'position': new google.maps.LatLng(val.Lat, val.Lng), 'bounds':true, 'icon':'myicon.png' } ).click(function(){
$('#map_canvas').gmap('openInfoWindow', { 'content': '<h1>'+val.Name+'</h1>'+'<h2 style="color: grey">'+val.Address+'</h2><p style="color: green">'+val.Telephone+'</p>' }, this);
});
});
});
});
// upon clicking submit button - clear old markers and plot newly filtered ones on the map
$('#myform').on('submit', function(e) {
$('#map_canvas').gmap('clear', 'markers');
e.preventDefault();
var myData = $('#myform').serializeArray();
$.getJSON('myscript.php', myData, function(json){
var theMarkers = json;
$.each(theMarkers, function(i, val) {
$('#map_canvas').gmap('addMarker', { 'position': new google.maps.LatLng(val.Lat, val.Lng), 'bounds':true, 'icon':'myicon.png' } ).click(function(){
$('#map_canvas').gmap('openInfoWindow', { 'content': '<h1>'+val.Name+'</h1>'+'<h2 style="color: grey">'+val.Address+'</h2><p style="color: green">'+val.Telephone+'</p>' }, this);
});
});
});
});
答案 0 :(得分:2)
$('#map_canvas').gmap('set', 'bounds', null);
原来你必须重置边界。在绘制/创建标记之前。