• home > DB > NotOnlySQL >

    taro开发小程序使用地图服务:微信+腾讯地图

    Author:zhoulujun Date:

    小程序的地图服务,看taro:https: docs taro zone docs apis location chooseLocation chooseLocation api功能是依赖于腾讯位置服务,


    小程序的地图服务,看taro:https://docs.taro.zone/docs/apis/location/chooseLocation/

    chooseLocation api功能是依赖于腾讯位置服务,所以需要使用 api 密钥。如果您没有,可以前往腾讯位置服务开发者控制台进行申请。

     授权小程序获取用户地理位置

    使用小程序,需要在/src/app.config.js添加配置

    export default defineAppConfig({
       //加入以下的代码	
      "permission":{
        "scope.userLocation":{
          "desc": "获取地理位置信息的用途描述"
        }
      }
      
    })

    再小程序管理后台,也需要申请一下。设置微信小程序安全域名等,这里不赘述了

    再页面中,初始化地图

    import React, { useState } from 'react';
    import { Map, View, Text } from '@tarojs/components';
    
    
    import './index.scss';
    import Taro, { useReady } from '@tarojs/taro';
    import GlobalStore from '@/hooks/GlobalStore';
    
    function Detail() {
      const { tripDestination } = GlobalStore.useContainer();
      const [date, setDate] = useState([]);
      let mapCtx;
      // <map id="map" longitude="{{longitude}}" latitude="{{latitude}}"></map>
      // 经纬度
      const [gis, setGis] = React.useState<[number, number]>([114.052622, 22.55242]);
      const [list, setList] = useState<TripData[]>([]);
      const [active, setActive] = useState(2);
      const [key, setKey] = useState(0);
      function tap(e) {
        console.log('onClick={tap}')
        console.log(e)
        const item = list[active]
        if (!item?.record) {
          return
        }
        debugger;
        item.record.push({
          title: '乌鲁木齐',
          latitude: e.detail.latitude,
          longitude: e.detail.longitude,
          date: item.date,
        })
        list[active] = item;
        setList(list)
        setKey(+new Date())
    
    
      }
    
      function tapMarker(e) {
        console.log('onMarkerTap={tapMarker}')
        console.log(e)
      }
    
      return (
        <View className='p-normal full-page bg-gray'>
          <Map
            id='map'
            style={{ height: '40vh', width: '100%' }}
            latitude={gis[1]}
            longitude={gis[0]}
            scale={13}
            show-location={true}
            onTap={tap}
            onMarkerTap={tapMarker}
          />
        </View>
      );
    }
    
    export default Detail;


    taro 引入腾讯地图小程序插件

    const latitude = res.latitude;
    const longitude = res.longitude;
    
    var QQMapWX = require("../../common/lib/qqmap-wx-jssdk");//加载微信小程序JavaScriptSDK
    
    var qqmapsdk = new QQMapWX({
      key: "XXXX-XXXX-XXX-XXXX-XXXXX-XXXX" // 必填 填写刚刚在腾讯地图API平台申请的开发者密钥
    });
    console.log("888", latitude, longitude);//测试 输出当前位置到的经纬度
    
    qqmapsdk.reverseGeocoder({//逆地址解析 获取当前城市信息
      location: {//经纬度
        latitude: latitude,
        longitude: longitude
      },
      success: function(res) {//请求成功回调函数
        console.log("666f", res);//包含地址信息的返回值
      },
      fail: function(a) {//请求失败回调函数
        console.log(a);
      }
    });
    }

    qqmap-wx-jssdk.min.js是腾讯位置服务的sdk


    参考文章:

    记一次taro开发小程序,利用腾讯地图SDK进行逆地址解析获取城市位置信息 https://blog.csdn.net/qq_46826837/article/details/123038092

    taro 兼容支付宝小程序和微信小程序<四> -- 腾讯地图和高德地图api https://blog.csdn.net/hanchengmei/article/details/126778117

    Taro微信小程序-地图 https://www.jianshu.com/p/b8972e04b28d



    转载本站文章《taro开发小程序使用地图服务:微信+腾讯地图》,
    请注明出处:https://www.zhoulujun.cn/html/DB/NotOnlySQL/8973.html