如何解决重置Google Maps API v3上的边界
| 当用户选择一个选项时,如何重置GoogleMap的边界?边界已经设置为包括该区域的“大图”,我想在用户选择一个选项时缩放到特定区域...并且需要通过重置边界来做到这一点。扩展以包括纬度/经度将不起作用,因为它们已经包含在内。解决方法
您必须创建一个新的bounds对象,将地图点添加到该对象,然后将bounds对象添加到地图。
浓缩溶液:
//Create new bounds object
var bounds = new google.maps.LatLngBounds();
//Loop through an array of points,add them to bounds
for (var i = 0; i < data.length; i++) {
var geoCode = new google.maps.LatLng(data[i][1],data[i][2]);
bounds.extend(geoCode);
}
//Add new bounds object to map
map.fitBounds(bounds);
我的完整解决方案是删除现有标记,通过ajax获取更新的点数组,将其添加到地图中,然后重置地图边界。
<script type=\"text/javascript\">
var map;
var markers = [];
$(document).ready(function () {
initialize();
setInterval(function () {
setMarkers();
},3000);
});
google.maps.visualRefresh = true;
function initialize()
{
var mapOptions = {
zoom: 2,center: new google.maps.LatLng(45,-93),mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById(\'map-canvas\'),mapOptions);
setMarkers();
}
function setMarkers()
{
removeMarkers();
var bounds = new google.maps.LatLngBounds();
$.ajax({
url: \"/Your/Url?variable=123\",dataType: \"json\",success: function (data) {
//Data returned is made up of string[3]
if (data != null) {
//loop through data
for (var i = 0; i < data.length; i++) {
var geoCode = new google.maps.LatLng(data[i][1],data[i][2]);
var marker = new google.maps.Marker({
position: geoCode,map: map,title: data[i][0],content: \'<div style=\"height:50px;width:200px;\">\' + data[i][0] + \'</div>\'
});
var infowindow = new google.maps.InfoWindow();
google.maps.event.addListener(marker,\'click\',function () {
infowindow.setContent(this.content);
infowindow.open(map,this);
});
markers.push(marker);
bounds.extend(geoCode);
}
}
map.fitBounds(bounds);
}
});
}
function removeMarkers()
{
for (var i = 0; i < markers.length; i++) {
markers[i].setMap(null);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。