场景:刚刚接到需求---通过输入地名搜索位置 显示在地图上,然后百度了一番,发现很多都是BMap版本的地图 而最新我用的是BMapGL地图 所以多多少少有一些不一样,查略相关文档得出解决方案😊。
废话不多说直接上才艺 ✈✈✈:
注意:1.这里是在VUE里面实现的.
2.前提是你自己创建好了地图对象,我这里命名为mapObject.
3.里面都带有注释.
findFn() {
//console.log("搜索", this.findvalue);//收集到的地名
var local,
point,
marker,
myIcon = null;
local = new BMapGL.LocalSearch(this.mapObject);//创建本地搜寻对象
local.search(this.findvalue);//本地搜寻对象调用search方法 传入地名
// 调用callback自定义方法
local.setSearchCompleteCallback((re) => {
// console.log(re);//打赢出来看一下地图传进来的对象带有那些信息
if (re.keyword) {
// 第一步清空所有标签
this.mapObject.clearOverlays();
//创建一个新的point
point = new BMapGL.Point(
re._pois[0].point.lng,
re._pois[0].point.lat
);
// 创建marker的图标
myIcon = new BMapGL.Icon(
require("./../../../../assets/img/marker2.png"),
new BMapGL.Size(52, 65)
);
// 创建一个新的marker
marker = new BMapGL.Marker(point, {
icon: myIcon, // 更换标记点样式
});
// 移动到该点上
this.mapObject.centerAndZoom(point, 18);
// 将marker添加到地图上
this.mapObject.addOverlay(marker);
}
});
},
(欢迎大家留言👇)