从谷歌地图边界获取经纬度值

5

我有一个由Google地图API的getBounds()返回的绑定值,如下所示 -

**_.pe {pa: oe, ka: ke}       
ka: ke {g: -180, h: 180}          
pa: oe {g: -26.222936261748305, h: 72.98776122961861}       
__proto__: Object**             

通过谷歌搜索,我发现可以使用 getSouthWest() 和 getNorthEast() 的接口来解码上述信息以获取所需的坐标,但不幸的是对于我而言它无法工作。我得到以下输出 -
**console.log(vr.getNorthEast())      
VM312861:1          
_.L {lat: ƒ, lng: ƒ}     
lat: ƒ ()        
lng: ƒ ()         
__proto__: Object**  

任何想法如何修复这个问题或任何其他方法,我可以使用获取边界坐标。谢谢。
1个回答

7

getNorthEastgetSouthWest返回LatLng对象。要从这些对象中获取原始值,您可以在LatLng对象上使用以下函数来获取坐标:.lat()表示纬度,.lng()表示经度,或.toString()表示坐标的字符串表示形式。

另外,请注意必须初始化地图,否则边界将未定义。

以下是一个工作示例。您可以忽略初始脚本错误,这是由于未使用API密钥导致的。只需拖动地图即可在控制台中看到所有四个角的坐标:

let map;

function initialize() {
  let mapOptions = {
    zoom: 8,
    center: new google.maps.LatLng(-34.397, 150.644)
  };
  map = new google.maps.Map(document.getElementById('map-canvas'),
    mapOptions);

  map.addListener("dragend", function() {
    let bounds = map.getBounds();
    let ne = bounds.getNorthEast(); // Coords of the northeast corner
    let sw = bounds.getSouthWest(); // Coords of the southwest corner
    let nw = new google.maps.LatLng(ne.lat(), sw.lng()); // Coords of the NW corner
    let se = new google.maps.LatLng(sw.lat(), ne.lng()); // Coords of the SE corner
    console.log(ne.toString(), sw.toString(), nw.toString(), se.toString());
  })
}

google.maps.event.addDomListener(window, 'load', initialize);
#map-canvas {
  height: 500px;
  margin: 0px;
  padding: 0px;
  width: 500px;
}
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
<div id="map-canvas"></div>


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接