百度地图行政区优化卡顿
只筛选一个区域
沿海城市会出现多个区域,比如上海有4个区域,一个是主区域,外加三个岛屿,把三个岛屿排除掉
// 获取行政区的时候有可能会出现多个行政区,只获取最大的行政区域
let bounder = res.boundaries.reduce((pre, next) => {
return pre.length >= next.length ? pre : next;
});
筛选点位
根据不同的点数进行不同等比的筛选,减少点位
getOptimizationBounder = function(bounder) {
const splittedBounder = bounder.split(';');
// 如果总数量小于 100 个点的话就不进行缩减了,不然会很丑(例如海南台湾,会变成一个三角形或者消失掉)
if (splittedBounder.length < 1000) {
return bounder;
}
// 等距筛选点位
if (splittedBounder.length < 5000) {
const minBounder = splittedBounder.filter((point, index) => !(index % 5));
return minBounder.join(';');
}
if (splittedBounder.length < 10000) {
const minBounder = splittedBounder.filter((point, index) => !(index % 15));
return minBounder.join(';');
}
const minBounder = splittedBounder.filter((point, index) => !(index % 25));
return minBounder.join(';');
};