我有一张地图,上面有很多标记。在我的工作流程中,我从过滤列表中取出所有标记,将它们添加到new google.maps.LatLngBounds()
中,使我的地图与过滤列表标记居中。
它工作得很好,但是没有任何原因(在我这边),一些属性被改变了。
一开始,我是这样写的:coordonnees = new google.maps.LatLng(marker_data.bounds.ab.lo, marker_data.bounds.Fa.lo);
它停止工作market_data.bounds.ab is undefined
coordonnees = new google.maps.LatLng(marker_data.bounds.eb.lo, marker_data.bounds.Ha.lo);
然后是marker_data.bounds.eb
所以今天早上我(再次)改变了使用Ia和Za。现在我的情况是这样的:
let coordonnees;
if(marker_data.bounds.ab != null) {
coordonnees = new google.maps.LatLng(marker_data.bounds.ab.lo, marker_data.bounds.Fa.lo);
} else if(marker_data.bounds.Ia != null && marker_data.bounds.Za != null) {
coordonnees = new google.maps.LatLng(marker_data.bounds.Za.lo, marker_data.bounds.Ia.lo);
} else {
coordonnees = new google.maps.LatLng(marker_data.bounds.eb.lo, marker_data.bounds.Ha.lo);
}
为什么有些属性会自己改变?
我正在使用GeoField/drupal来生成标记,但它似乎不是来自这里。
编辑:
找到了这样做的解决方案,但仍然不能解释为什么属性被改变
let latitudeKey = Object.keys(marker_data.bounds)[0]
let latitude = marker_data.bounds[latitudeKey].lo
let longitudeKey = Object.keys(marker_data.bounds).pop()
let longitude = marker_data.bounds[longitudeKey].lo
coordonnees = new google.maps.LatLng(latitude, longitude);
为什么有些属性会自动改变?
因为你没有使用文档化的方法。API有完整的文档。不做使用未记录的属性,因为这些属性可以随时更改。
LatLng
类有可用的方法,如lat()
和lng()
。
对于LatLngBounds
类也是如此。
例如,如果您要查找LatLntBounds
对象的西南角的纬度,您可以这样做:
let bounds = new google.maps.LatLngBounds();
// Do stuff with your bounds object here then
let swLat = bounds.getSouthWest().lat();
从文档中可以看到,getSouthWest()
方法返回一个LatLng
对象,该对象有一个lat()
方法。