uniapp 地图Map组件

需求:在地图上标注用户当前位置,并显示位置信息。

设计图:

思路:

uniapp 地图组件mapAPI地址:

https://uniapp.dcloud.io/component/map

注意官方的话,很重要:

地图组件用于展示地图,而定位API只是获取坐标,请勿混淆两者。

地图组件用于展示地图,而定位API只是获取坐标,请勿混淆两者。

地图组件用于展示地图,而定位API只是获取坐标,请勿混淆两者。

啥意思呢 ?就是地图组件只是负责展示地图,不负责获取坐标,要额外去获取坐标和地理位置。当时没看懂,百度了很久很久很久很久,才知道地图和定位,是分开的两个功能。

 

1.首先,展示地图 (官方代码)

<template>
    <view>
        <view class="page-body">
            <view class="page-section page-section-gap">
                <map style="width: 100%; height: 300px;" 
                    :latitude="latitude" 
                    :longitude="longitude" 
                    :markers="covers"
                >
                </map>
            </view>
        </view>
    </view>
</template>
export default {
    data() {
        return {
            id:0, // 使用 marker点击事件 需要填写id
            title: 'map',
            latitude: 39.909,
            longitude: 116.39742,
            covers: [{
                latitude: 39.909,
                longitude: 116.39742,
                iconPath: '../../../static/location.png'
            }]
        }
    },
    methods: {}
}

 

2.  markers 标记点数据covers 、中心经度longitude 、中心纬度latitude都是写死的,需要动态获取当前用户的定位。

获取定位的方法: 

 uni.getLocation(OBJECT)  

https://uniapp.dcloud.io/api/location/location?id=getlocation

uni.getLocation({
        /* 
          map组件默认为国测局坐标gcj02,
          调用 uni.getLocation返回结果传递给组件时,需指定 type 为 gcj02 
        */
        type: "gcj02",
        altitude: true,
        geocode: true, 
        success: (e) => {

          // 定位得到的经纬度 
          let longitude = e.longitude
          let latitude = e.latitude

          // 设置中心经纬度
          this.longitude = longitude
          this.latitude = latitude

          // 画出定位位置
          this.covers[0] = {
            longitude,
            latitude, 
            iconPath: "../../static/baseIcon/dingwei.png",
          }

          /* 抛出获取到地址的省市区数据 */ 
          let address = e.province + e.city + e.street + e.streetNum + e.poiName         
          
        }
      })

所有代码:

<!-- 地图组件,不是定位组件 -->

<template>
  <view class="general-map-contain">
    <map
      style="width: 100%; height: 400rpx"
      :latitude="latitude"
      :longitude="longitude"
      :markers="covers"
    />
  </view>
</template>

<script> 
export default {  
  data() {
    return {
      // 中心纬度
      latitude: '',
      // 中心经度
      longitude: '',
      // 标记点
      covers: [],
    }
  },
  mounted() {
    this.$nextTick(() => {
      // 进入页面,获取用户经纬度地址
      this.getMyLocation();
    });
  },  
  methods: {
    
    getMyLocation() {      
      uni.getLocation({
        /* 
          map组件默认为国测局坐标gcj02,
          调用 uni.getLocation返回结果传递给组件时,需指定 type 为 gcj02 
        */
        type: "gcj02",
        altitude: true,
        geocode: true,  {
        success: (e) => {
           // 中心经纬度
           this.longitude = longitude
           this.latitude = latitude

           
          console.log('定位所有数据:',e) 
          let longitude = e.longitude
          let latitude = e.latitude
          
          // 标注定位位置
          this.covers[0] = {
            longitude,
            latitude, 
            iconPath: "../../static/baseIcon/dingwei.png",
          }

          /* 地址的省市区具体信息 */ 
          let address = e.province + e.city + e.street + e.streetNum + e.poiName         
          
        }
      })
    }
  }
}
</script>

 

 

 

 

 

 

 

 

  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
uniapp地图组件是一个用于展示地图组件,它是使用vue.js开发的一个前端框架。开发者可以使用一套代码编写应用,并发布到多个平台,包括iOS、Android、Web以及各种小程序和快应用平台。 地图组件使用腾讯地图来展示地图,并且可以通过定位API(uni.getLocation)获取坐标信息。在uniapp中使用地图组件时,需要注意经纬度必填,如果不填,则默认值是北京的经纬度。 使用uniapp地图组件的基本使用方法是将map组件添加到页面中,并设置相应的属性。通过设置属性,可以实现地图的缩放、中心点位置、标记点等功能。具体的属性设置可以参考uniapp的官方文档。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [uniappmap地图组件介绍](https://blog.csdn.net/weixin_67490903/article/details/126013460)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [uniappmap组件的详细总结,含文字气泡、点击定位等(附全部源码)](https://blog.csdn.net/weixin_56740218/article/details/125612958)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值