高德地图 自定义控件 图层切换(卫星、默认)

在自定义的控件中点击事件来主动切换地图 图层先看效果图

 一。添加自定义的控件 定位在地图的某个位置
  <!-- 控件 -->
    <div class="contron_box">
      <div
        v-for="item in control_list"
        :key="item.index"
        class="c_items"
        @tap="getControl(item)"
      >
        <view style="font-size: 16px" :class="['cuIcon-' + item.cuIcon]"></view>
        <p>{{ item.name }}</p>
      </div>
    </div>
    <!-- 弹窗 -->
    <Modal
      :modalName="modalName"
      :chooseMap="chooseMap"
      :title="title"
      @hideModal="hideModal"
      @changeMap="changeMap"
    ></Modal>
二:弹窗内部 (active1,active2是为了添加选中的样式 可优化)
 <view class="chooseImg" v-if="chooseMap">
          <image
            :class="[active1 ? 'active1' : '', 'empty-icon']"
            src="/static/city1.png"
            mode="aspectFill"
            @tap="checkMap('city')"
          />
          <image
            :class="[active2 ? 'active2' : '', 'empty-icon']"
            src="/static/star.png"
            mode="aspectFill"
            @tap="checkMap('')"
          />
        </view>
三.主要内容(事件处理,图层切换)

(控件子组件)

    checkMap(type) {
      if (type && type == "city") {
        this.active1 = !this.active1;
        this.active2 = false;
        this.$emit("changeMap", "city");
      } else {
        this.active2 = !this.active2;
        this.active1 = false;
        this.$emit("changeMap", "star");
      }
    },

(父组件创建的map,在这里切换图层)

changeMap(type){
		// 创建一个默认的图层组件
		let defaultLayer = new AMap.TileLayer();
		// 创建一个卫星图图层组件
		let satelliteLayer = new AMap.TileLayer.Satellite();
		// 将默认图层添加到地图中
		this.map.add(defaultLayer);
		 // 获取当前地图显示的图层
		 let currentLayer = this.map.getLayers()[0]; // 假设默认图层在第一个位置
		// 切换图层
		if(type=='city'){
			//获取地图图层数据
			this.map.setLayers([defaultLayer]); // 切换回默认图层
		}else{
			this.map.setLayers([satelliteLayer]); // 切换到卫星图图层
		}
	},

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
高德地图 Web API 提供了 `AMap.TileLayer` 类来实现地图图层切换。你可以通过创建 `AMap.TileLayer` 实例来切换不同的地图类型,如标准地图或卫星地图。 以下是一个简单的示例,演示如何在高德地图 Web API 中切换标准地图和卫星地图: ```html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>高德地图 Web API - 切换标准地图和卫星地图</title> <style type="text/css"> #mapContainer { width: 100%; height: 600px; } </style> </head> <body> <div id="mapContainer"></div> <script src="https://webapi.amap.com/maps?v=1.4.15&key=你申请的高德地图API Key"></script> <script> var map = new AMap.Map('mapContainer', { zoom: 10, center: [116.397428, 39.90923] }); // 创建标准地图图层 var tileLayer = new AMap.TileLayer(); // 创建卫星地图图层 var satelliteLayer = new AMap.TileLayer.Satellite(); // 添加切换控件 map.addControl(new AMap.MapType({ defaultType: 0, // 默认显示标准地图 showRoad: true, // 是否显示路网图层 mapTypes: [tileLayer, satelliteLayer] // 显示的地图类型数组 })); </script> </body> </html> ``` 在上面的示例中,我们首先创建了一个 `AMap.Map` 实例,并设置了地图的缩放级别和中心点。然后,我们创建了一个标准地图图层和一个卫星地图图层,并将它们添加到了地图上。 最后,我们通过创建一个 `AMap.MapType` 实例并将其添加到地图上来添加切换控件。`AMap.MapType` 的 `defaultType` 属性指定了默认显示的地图类型,`showRoad` 属性指定了是否显示路网图层,`mapTypes` 属性指定了可供切换的地图类型数组。 这样,你就可以在高德地图 Web API 中轻松切换标准地图和卫星地图了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值