使用vue-amap海量点插件,调用高德地图原生图层自适应API:setFitView
函数,当地图放大层级大时,出现偶尔失效情况,作为精品应用是不允许这种偶然事件发生的。
前面一直考虑是不是setFitView
的参数传值不对,各种尝试海量点对象的传入,均无效。
因此就另辟蹊径,考虑地图的另一个展示范围API Bounds
对象。
Bounds
对象官方文档查看1,传入西南和东北的经纬度坐标对象即可。
AMap.Bounds(southWest:LngLat, northEast:LngLat)//参数southWest、northEast分别代表地物对象西南角经纬度和东北角经纬度值。
函数参考博客2。
/**
* 坐标集合的最西南角
* @param {*} list
* list 是接口获取的点 的数组
*/
export const getSW = (list) => {
let south = null
let west = null
for (let item of list) {
if ((west && item.longitude < west) || !west) {
west = item.longitude - 0.7
}
if ((south && item.latitude < south) || !south) {
south = item.latitude - 0.7
}
}
return [west, south]
}
/**
* 最东北角
* @param {*} list
*/
export const getNE = (list) => {
let north = null
let east = null
for (let item of list) {
if ((east && item.longitude > east) || !east) {
east = item.longitude + 0.7
}
if ((north && item.latitude > north) || !north) {
north = item.latitude + 0.7
}
}
return [east, north]
}
this.$refs['map'].$$getInstance().setBounds(mybounds)
对较为分散的10个坐标点进行自适应,如下图所示,分布较为均匀。
看着就舒服。😃
一个点也是用,直接居中显示。
[地物对象的经纬度矩形范围](https://lbs.amap.com/api/javascript-api/reference/core#Bounds)
??