谷歌地图标记正在改变属性



我有一张地图,上面有很多标记。在我的工作流程中,我从过滤列表中取出所有标记,将它们添加到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()方法。

相关内容

  • 没有找到相关文章

最新更新