高德地图添加标记点

高德地图添加标记点

<template>
  <div></div>
</template>
<script>
import util from "@/utils/util"
import locationUtils from '@/utils/locationUtils'
export default {
  components: {},
  props: {},
  data () {
    return {
      map: null,
      icon: new AMap.Icon({
        size: new AMap.Size(60, 60),    // 图标尺寸
        image: require("@/assets/images/position.svg"),  // Icon的图像
        imageSize: new AMap.Size(60, 60)   // 根据所设置的大小拉伸或压缩图片
      }),
      iconActive: new AMap.Icon({
        size: new AMap.Size(60, 60),    // 图标尺寸
        image: require("@/assets/images/positionActive.svg"),  // Icon的图像
        imageSize: new AMap.Size(60, 60)   // 根据所设置的大小拉伸或压缩图片
      }),
      markList:[]
    };
  },
  watch: {},
  computed: {},
  methods: {
    setTages (arry, map,tagesType=false) {
      let that = this
      if (!map) return
      // 清除地图的覆盖物
      map.clearMap()
      this.markList = []
      arry.map(ele => {
        // 转换天地图经纬度到高德地图
        let lat = locationUtils.wgs84Togcj02(ele.longitude, ele.latitude)
        if(tagesType == 'onlyShow'){
          let marker = new AMap.Marker({
            position: new AMap.LngLat(lat[0], lat[1]),
            icon: this.iconActive
          });
          map.add(marker);
          return
        }
        // 设置标记点
        let marker = new AMap.Marker({
          position: new AMap.LngLat(lat[0], lat[1]),
          icon: this.icon
        });
         marker.on('click', (e)=>{
           that.setDefult()
           map.setZoomAndCenter(18,new AMap.LngLat(lat[0], lat[1]),false,500)
           marker.setIcon(that.iconActive)
           if(that.$parent.showDetail){
             that.$parent.showDetail(ele)
           }
         });
         this.markList.push(marker)
        map.add(marker);
      })
      /**SetFitView,效果就是可以自动适应显示你想显示的范围区域,举个简单的应用场景,
       * 比如一个点在海南,另一个点在东北,那么使用了这个方法,显示的将是从南到北
       * 的整个中国区域,而如果是一个点在天安门,另一个在故宫,使用这个方法后,那么显示的只会是二环内的区域了。
       * 那么问题是:如果我本来地图上就有很多点,默认显示 区域为整个北京,但是我从数据库中取出的数据的几个点仅仅只在三环内,
       * 如何在取出数据后,自适应的只显示到这部分的几个点呢? 
       * var map = new AMap.Map("container",{
            resizeEnable:true,
            zoom:12,
            center:[116.397428, 39.90923]
          })
          //东北
          var m = new AMap.Marker({
                position: [121.851547,52.762852],
                map:map
            });
            //海南
          var m2 = new AMap.Marker({
                position: [109.439743,18.529034],
                map:map
          });
          //希望自适应展示的部分的点
          var markers = [], positions = [[116.405467, 39.907761], [116.415467, 39.907761], [116.415467, 39.917761], [116.425467, 39.907761], [116.385467, 39.907761]];
          for (var i = 0, marker; i < positions.length; i++) {
              marker = new AMap.Marker({
                  map: map,
                  icon: 'http://webapi.amap.com/theme/v1.3/markers/n/mark_b'+(i+1)+'.png',
                  position: positions[i]
              });
              markers.push(marker);
          }
          //------------------------------------
          //		    map.setFitView();  如果直接这样写,默认是把东北和海南的点都展示出来,
          //但是希望只自适应的展示markers里的5个点
          //-----------------------------------------------------------------------------------------------------
          //1.把想自适应的部分的点装在一个透明的覆盖物图层里
          var polygon = new AMap.Polygon({
            path : positions,  //以5个点的坐标创建一个隐藏的多边形
            map:map,
            strokeOpacity:0,//透明
            fillOpacity:0,//透明
            bubble:true//事件穿透到地图
          });
          var overlaysList = map.getAllOverlays('polygon');//获取多边形图层
          
          //2.使用setFitView方法
          map.setFitView(overlaysList);//自适应显示
      */
      map.setFitView()
    },
    setDefult(){
      this.markList.map(ele=>{
        ele.setIcon(this.icon)
      })
    },
  },
  created () { },
  mounted () { }
};
</script>
<style lang="scss" scoped>
</style>
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在高德地图添加标记点(Marker)可以通过以下步骤实现: 1. 引入高德地图 JavaScript API 在 HTML 文件中引入高德地图 JavaScript API,例如: ```html <script src="https://webapi.amap.com/maps?v=1.4.15&key=您申请的key值"></script> ``` 其中 `key` 值需要替换为您自己申请的高德地图开发者 Key。 2. 创建地图容器 在 HTML 文件中创建一个地图容器,例如: ```html <div id="mapContainer" style="width: 100%; height: 500px;"></div> ``` 该容器的宽度和高度可以根据实际需求进行调整。 3. 创建地图对象 在 JavaScript 中创建地图对象,并将其显示在地图容器中,例如: ```javascript var map = new AMap.Map('mapContainer', { center: [116.397428, 39.90923], zoom: 13 }); ``` 其中 `center` 表示地图的中心点坐标,`zoom` 表示地图的缩放级别。 4. 添加标记点 通过 `AMap.Marker` 类创建一个标记点对象,并设置其位置、图标等属性,例如: ```javascript var marker = new AMap.Marker({ position: [116.397428, 39.90923], icon: 'https://webapi.amap.com/images/marker_sprite.png' }); ``` 其中 `position` 表示标记点的位置坐标,`icon` 表示标记点的图标。如果不设置图标,则默认使用高德地图提供的红色图钉样式。 5. 将标记添加地图中 通过 `AMap.Map` 对象的 `add` 方法将标记添加地图中,例如: ```javascript map.add(marker); ``` 完成以上步骤后,您就可以在高德地图中看到一个带有标记点的地图了。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值