当地图旋转时,你如何找到谷歌地图V3的4个角
How do you find the 4 corners of a Google Map V3 when the map is rotated?
Google maps V3 API在地图上有一个getBounds方法,该方法返回视口的东北角和西南角。理论上,我可以通过使用相对点的经纬度来计算西北角和东南角,即
NE=(lat=37.5,lng=-97.5)
SW=(lat=37.0,lng=-96)
…因此
NW=(纬度=37.5,lng=-96)
SE=(lat=37.0,lng=-97.5)
(5年前甚至有一篇关于这个的帖子。)
但我在网上找到的所有答案都假设地图指向正北,意思是"东北"实际上意味着"右上角"。
但是如果旋转贴图会发生什么?我必须根据地图的方向使用trig来计算其他两个角吗?或者,谷歌会给我一个区域的实际东北和西南坐标,该区域包含我视口中的内容,即使这意味着生成的矩形的部分超出了旋转地图的边界?
或者谷歌给了我实际的东北和西南坐标包含我的视口中内容的区域
没错,getBounds
函数返回基于当前视口的东北角和西南角。下面的示例对其进行了说明,特别是它绘制了包含当前视口的大小的矩形:
var map;
var area;
function initMap() {
map = new google.maps.Map(document.getElementById('map'), {
center: {lat: 45.518, lng: -122.672},
zoom: 18,
mapTypeId: google.maps.MapTypeId.HYBRID,
//heading: 0,
//tilt: 45
});
google.maps.event.addListenerOnce(map, 'idle', function(){
drawBounds(map);
});
}
function drawBounds(map)
{
var bounds = map.getBounds();
var areaBounds = {
north: bounds.getNorthEast().lat(),
south: bounds.getSouthWest().lat(),
east: bounds.getNorthEast().lng(),
west: bounds.getSouthWest().lng()
};
area = new google.maps.Rectangle({
strokeColor: '#FF0000',
strokeOpacity: 0.8,
strokeWeight: 2,
fillColor: '#FF0000',
fillOpacity: 0.35,
map: map,
bounds:areaBounds
});
console.log(areaBounds);
}
function rotate() {
var heading = map.getHeading() || 0;
map.setHeading(heading + 90);
area.setMap(null);
drawBounds(map);
}
html, body {
height: 100%;
margin: 0;
padding: 0;
}
#map {
height: 100%;
}
#floating-panel {
position: absolute;
top: 10px;
left: 25%;
z-index: 5;
background-color: #fff;
padding: 5px;
border: 1px solid #999;
text-align: center;
font-family: 'Roboto','sans-serif';
line-height: 30px;
padding-left: 10px;
}
<div id="floating-panel"><input type="button" value="Rotate" onclick="rotate();"></div>
<div id="map"></div>
<script async defer src="https://maps.googleapis.com/maps/api/js?callback=initMap"></script>
相关文章:
- 谷歌地图v3标记没有显示ie8和9
- 谷歌地图v3:当函数'失败'呼叫
- 谷歌地图V3
- 谷歌地图V3-我无法调和关闭
- 在谷歌地图V3上选择多边形
- 谷歌地图v3侦听器(单击)-更改URL
- 谷歌地图V3在安卓应用程序中的实现
- 对谷歌地图v3 API getDetails()函数感到困惑
- 谷歌地图 v3 缩放特定位置
- 右键点击标记-谷歌地图V3
- 如何重新启用禁用的谷歌地图v3拖放、缩放等
- 交互式信息窗口谷歌地图V3
- 未捕获的类型错误:无法读取属性'长度'未定义的谷歌地图V3
- 谷歌地图v3
- 为谷歌地图v3
- 谷歌地图v3-将标记替换为infoWindow显示
- 如何在谷歌地图V3上居中和缩放多个标记
- 多站方向-谷歌地图v3
- 如何在谷歌地图v3中创建在所有缩放级别具有相同半径的圆
- 尝试在谷歌地图V3中绘制超过10个标记,不使用地理编码