vue3使用高德地图API-自定义搜索并加载marker、点击marker显示infoWindow(踩坑日记)

vue3使用高德地图API(踩坑日记)

注意点:
1、marker的显示上:
要么直接在marker的配置项中使用map,要么使用map.add(marker)直接在地图上加,尽量不要两则都用,推荐在配置项指定显示的map
2、各个控件在map中的显示,要么统一用配置项,要么都用map.add(控件实例),否则会出现错误
代码如下:


/* ************* 地图展示 ************** start ******* */
let AMap = (window as any).AMap;
// 地图实例
let map:any = null;
// 城市
let city: any = ref("成都市");
// 地点搜索
var placeSearch:any = null;
// 地图标点
let markers:any = reactive<any[]>([]);
// 选中的地图标点
let markersActive:any = reactive<any[]>([]);
// 地图上的窗体(详情信息窗体)
var infoWindow:any = null;
/* 高德地图 */
let uploadGDMap = () => {
   
    map = new AMap.Map('container-map', {
   
        resizeEnable: true,
        viewMode: '2D', // 默认使用 2D 模式,如果希望使用带有俯仰角的 3D 模式,请设置 viewMode: '3D'
        zoom: 12, // 初始化地图层级
        // center: [104.06, 30.67] // 初始化地图中心点
    });
    // map.on('complete',()=>{
   
    //     ElMessage.info("加载完成!");
    // })
    // map.setCity(city.value);
    // searchPosition('');
}
/* marker图标点击 */
let markerClick = (e:any)=>{
   
    console.log("marker信息:",e.target.w.extData);
    let poi = e.target.w.extData.poi;
    orgInfo.name = poi.name;
    orgInfo.adress = poi.adress;
    orgInfo.phone = poi.tel;
    loadPoint(e);
}
/* 清空所有的marker 
    all:清除所有的marker
    marker: 清除搜索出来的marker
    markerActive: 清除选中的marker
*/
let clearMarker = (type:'all'|'marker'|'markerActive' = 'all') => {
   
    
您好!对于Vue项目中使用高德地图marker点击跳转页面的需求,您可以按照以下步骤进行操作: 1. 首先,确保您已经成功引入了高德地图相关的 JavaScript APIVue项目中初始化地图组件。 2. 在Vue组件中,您可以通过创建一个`InfoWindow`组件来实现marker点击事件。 ```vue <template> <div> <el-button @click="showInfoWindow">显示Marker</el-button> <el-dialog v-if="showDialog" :visible.sync="showDialog"> <!-- 在此处添加您自定义的内容,可以是跳转链接或其他操作 --> <a href="your-link">跳转页面</a> </el-dialog> </div> </template> <script> export default { data() { return { showDialog: false }; }, methods: { showInfoWindow() { this.showDialog = true; } } }; </script> ``` 3. 在地图初始化后,创建添加Marker时,您可以通过监听marker的`click`事件来触发`showInfoWindow`方法,显示弹窗。 ```vue // 在合适的钩子函数中初始化地图,添加Marker mounted() { // 初始化地图 // ... // 创建添加Marker const marker = new AMap.Marker({ position: [longitude, latitude], map: mapInstance // mapInstance为地图实例 }); // 监听marker的click事件 marker.on(&#39;click&#39;, () => { this.showInfoWindow(); }); }, ``` 在上述示例中,点击"显示Marker"按钮将会弹出对话框,您可以在对话框中添加自定义的内容,如跳转链接或其他操作。请注意,在`<a href="your-link">跳转页面</a>`处,将"your-link"替换为您想要跳转的链接。 希望能对您有所帮助!如果有任何问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值