Вы можете использовать следующий подход, чтобы очистить маркеры, добавить новые маркеры и динамически установить центральное положение jQuery-ui-map.
//clear all markers
$('#map_canvas').gmap('clear', 'markers');
// add a new marker
var $marker = $('#map_canvas').gmap('addMarker', {id: i, 'position': new google.maps.LatLng(cityList[i][1], cityList[i][2]), title: cityList[i][0]});
// on marker click show the description
$marker.click(function() {
$('#map_canvas').gmap('openInfoWindow', {'content': cityList[this.id][0]}, this);
});
// update the map's center position
$("#map_canvas").gmap("get", "map").panTo(new google.maps.LatLng(cityList[i][1], cityList[i][2]));
Согласно документации Google Maps , метод panTo
выполняет панорамирование карты на минимальное количество, необходимое для содержания заданного LatLngBounds. Это не гарантирует, где на карте будут границы, за исключением того, что будет видна как можно большая часть границ. Границы будут расположены внутри области, ограниченной типом карты и элементами управления навигации (панорамирование, масштабирование и просмотр улиц), если они присутствуют на карте. Если границы больше карты, карта будет смещена, чтобы включить северо-западный угол границ. Если изменение положения карты меньше ширины и высоты карты, переход будет плавно анимирован.
Ниже вы можете найти образец. Если вы нажмете кнопку «Чикаго», будет добавлен маркер, и центральное положение карты будет обновлено до «Чикаго» * 1011 *.
<!doctype html>
<html lang="en">
<head>
<title>jQuery mobile with Google maps - Google maps jQuery plugin</title>
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.css" />
<script src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
<script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></script>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?v=3&sensor=false&language=en"> </script>
<script type="text/javascript" src="http://jquery-ui-map.googlecode.com/svn/trunk/ui/min/jquery.ui.map.min.js"></script>
<script type="text/javascript">
var mobileDemo = { 'center': '41,-87', 'zoom': 7 },
cityList = [
['Chicago', 41.850033,-87.6500523, 1],
['Kentucki', 37.735377,-86.572266, 2]
];
function initialize()
{
$('#map_canvas').gmap({ 'center': mobileDemo.center, 'zoom': mobileDemo.zoom, 'disableDefaultUI':false });
}
function addMarker(i)
{
//clear all markers
$('#map_canvas').gmap('clear', 'markers');
// add a new marker
var $marker = $('#map_canvas').gmap('addMarker', {id: i, 'position': new google.maps.LatLng(cityList[i][1], cityList[i][2]), title: cityList[i][0]});
// on marker click show the description
$marker.click(function() {
$('#map_canvas').gmap('openInfoWindow', {'content': cityList[this.id][0]}, this);
});
// set the map's center position
$("#map_canvas").gmap("get", "map").panTo(new google.maps.LatLng(cityList[i][1], cityList[i][2]));
}
$(document).on("pageinit", "#basic-map", function() {
initialize();
});
$(document).on('click', '.add-marker', function(e) {
e.preventDefault();
addMarker(this.id);
});
</script>
</head>
<body>
<div id="basic-map" data-role="page">
<div data-role="header">
<h1><a data-ajax="false" href="/">jQuery mobile with Google maps v3</a> examples</h1>
<a data-rel="back">Back</a>
</div>
<div data-role="content">
<div class="ui-bar-c ui-corner-all ui-shadow" style="padding:1em;">
<div id="map_canvas" style="height:350px;"></div>
</div>
<a href="#" id="0" class="add-marker" data-role="button" data-theme="b">Chicago</a>
<a href="#" id="1" class="add-marker" data-role="button" data-theme="b">Kentucki</a>
</div>
</div>
</body>
</html>
Надеюсь, это поможет.