谷歌地图JS API-如何使用fitBounds响应地图
Google Maps JS API - How to use fitBounds for responsive map?
我正试图在响应式网站的地图中显示某个区域。我希望它在加载时通过放大和缩小显示相同的区域,无论窗口大小如何。经过一些研究,我知道我需要使用谷歌地图JS API的fitBounds函数,但无法使其工作。到目前为止,这是我的代码:
<div id="map"></div><!--css rules to make it a 16/9 responsive box-->
<script src="https://maps.googleapis.com/maps/api/js?key=mykey" type="text/javascript"></script>
<script type="text/javascript">
function initialize() {
var mapOptions = {
center: new google.maps.LatLng(x, y), //any coordinates I put here don't matter, as I need the map to adjust using bounds, right?
zoom: 11
};
var bounds = google.maps.LatLngBounds(
new google.maps.LatLng(x, y), //SW coordinates here
new google.maps.LatLng(x, y) //NE coordinates here
);
var map = new google.maps.Map(document.getElementById("map"), mapOptions);
map.fitBounds(bounds);
}
google.maps.event.addDomListener(window, 'load', initialize);
google.maps.event.addDomListener(window, "resize", function() {
var bounds = map.getBounds();
google.maps.event.trigger(map, "resize");
map.fitBounds(bounds);
});
</script>
地图似乎只是显示了选项中的中心位置,而忽略了fitBounds调用。我错过了什么/做错了什么?
在有机会调整之前,您正在检索地图的边界
您需要为map resize事件添加一个额外的处理程序,然后将fitBounds代码移到其中。仍然在窗口调整大小处理程序中保留映射调整大小的触发器。
编辑
您需要将映射变量移到initialize函数之外,以便映射侦听器
以下是它的实现方式(使用jQuery窗口调整大小事件):
function initialize() {
var mapOptions = {
center: new google.maps.LatLng(x, y),
zoom: 11
};
var bounds = google.maps.LatLngBounds(
new google.maps.LatLng(x, y), //SW coordinates here
new google.maps.LatLng(x, y) //NE coordinates here
);
var map = new google.maps.Map(document.getElementById("map"), mapOptions);
map.fitBounds(bounds);
// Listen for events after map initialization
$(window).resize(function() {
google.maps.event.trigger(map, 'resize');
});
google.maps.event.addListener(map, 'resize', function() {
var bounds = map.getBounds();
map.fitBounds(bounds);
});
}
google.maps.event.addDomListener(window, 'load', initialize);
相关文章:
- 如何将getJson的响应保存在全局变量中
- 如何使用Spring MVC将Facebook返回的响应数据保存在Java类中
- 使用angularjs向浏览器发送servlet响应(下载功能)
- MockJax没有在JavaScript应用程序中发送对我AJAX请求的响应
- 不再使用innerHTML进行AJAX响应.(代码未得到响应)
- 为什么可以't我使用了AJAX响应的一部分
- 响应动画手风琴不工作
- 如何从SeleniumWebdriver获取异步Javascript响应
- Ajax调用在Firefox中不会自动响应
- 可以在响应时隐藏iphone上的“播放”按钮以进行视频播放
- 由于响应中不存在“Access Control Allow Origin”标头,跨域请求停止工作
- 如何在 JavaScript 和 HTML 中更改对输入框的提示响应
- IIS动态HTTP响应标头
- 预期响应包含一个对象,但在angular js中得到一个数组错误
- Ajax响应转换
- 使Intro.js工具提示响应
- 存储$http如何从$http函数(Angularjs)外部获取可访问变量中的响应
- 将高图饼图中的文本居中显示为响应
- Css转换没有响应
- 谷歌地图JS API-如何使用fitBounds响应地图