uniapp アプレットは Tencent Maps を使用します

1.Tencentマップキーを取得します。

1. Tencent マップ API を見つける

Tencent マップ A アドレス PI

登録してログインした後、「開発ドキュメント」をクリックし、「WeChat ミニ プログラム JavaScript SDK」を選択します。

ここに画像の説明を挿入

入力後、Hello world! の手順に従ってください。

ここに画像の説明を挿入

2. キーを申請する

上記の最初のステップでアプリケーション キーをクリックし、自分のアプリケーションを入力し、作成アプリケーションに名前と作成の種類を入力します。

ここに画像の説明を挿入

作成が成功したら、「キーの追加」をクリックして名前と説明を入力し、WeChat アプレットを選択し、独自のアプレットの APPID を入力して、「OK」をクリックします。

ここに画像の説明を挿入

ここに画像の説明を挿入

次に、アプレット内の設定

1. ミニプログラムアカウントがない場合

アプレット登録アドレスに登録し、開発管理で開発設定を見つけると、APP IDが表示されます

ここに画像の説明を挿入

開発設定 -> 「サーバー ドメイン名」を設定し、正当なドメイン名を要求し、https://apis.map.qq.com を追加します。

ここに画像の説明を挿入

3. コードの実装

WeChat ミニ プログラム JavaScriptSDK、WeChat ミニ プログラムJavaScriptSDK v1.2をダウンロード

ここに画像の説明を挿入

1. 新しい uniapp プロジェクトを作成します

ディレクトリ構造。ダウンロードした JavaScriptSDK v1.2 にファイルをインポートするための新しいユーティリティを作成します。

ここに画像の説明を挿入

2. プロジェクト内の設定

開発プロセス中に、unpackage>>dist>>dev>>mp-weixin>>app.json に次の構成を追加する必要があります。

"permission": {
    "scope.userLocation": {
      "desc": "你的位置信息将用于小程序位置接口的效果展示"
    }
 }

manifest.json のソース ビューで構成: appid と地理的位置を構成します。

"mp-weixin": {
    
     /* 小程序特有相关 */
		"appid": "", //需要配置appid
		"setting": {
    
    
			"urlCheck": false
		},
		"usingComponents": true,
		"permission": {
    
    
			"scope.userLocation": {
    
    
				"desc": "你的位置信息将用于小程序位置接口的效果展示"
			}
		}
	}
3. ページ固有のコード
<template>
	<view class="">
		<view class="ditu">
			<map style="width:100%;height:100%;" 
			:latitude="latitude" 
			:longitude="longitude" 
			:scale="scale"
			:markers="marker" 
			@markertap="toMap()">
			<!--此处踩坑问题1:
			@markertap 是点击地图上的标记点时 触发打开地图。
			@tap 是点击地图整体的时候 触发打开地图。
			-->
			</map>
		</view>
	</view>
</template>

<script>
	export default {
      
      
		data() {
      
      
			return {
      
      
				latitude: 39.542, //纬度
				longitude: 116.2529, //经度
				scale: 14, //地图缩放程度
			}
		},
	}
</script>
<style scoped>
	.ditu {
      
      
		width: 100%;
		height: 565rpx;
	}
</style>
4. 以下の図に示すように、開発が完了しました

ここに画像の説明を挿入

4. 現在地の緯度経度を取得する

1. ページ固有のコード
<template>
	<view class="">
		<view class="ditu">
			<map style="width:100%;height:100%;" :latitude="latitude" :longitude="longitude" :scale="scale"
				:markers="marker" @markertap="toMap()">
			</map>
		</view>
	</view>
</template>

<script>
	import QQMapWX from "@/utils/qqmap-wx-jssdk.min.js";
	export default {
      
      
		data() {
      
      
			return {
      
      
				latitude: 39.542, //纬度
				longitude: 116.2529, //经度
				scale: 14, //地图缩放程度
			}
		},

		methods: {
      
      
			getLocation(){
      
      
				const _this = this
				uni.authorize({
      
      
					scope: 'scope.userLocation',
					success() {
      
      
						let location = {
      
      
							longitude: _this.longitude,
							latitude: _this.latitude,
							province: "",
							city: "",
							area: "",
							street: "",
							address: "",
						};
						uni.getLocation({
      
      
							type: 'gcj02',
							geocode: true,
							success: function(res) {
      
      
								uni.setStorageSync('latitude', _this.latitude)
								uni.setStorageSync('longitude', _this.longitude)
								location.longitude = res.longitude;
								location.latitude = res.latitude;
								const qqmapsdk = new QQMapWX({
      
      
									key: 'PBZBZ-74CE3-7ND3P-3OVWM-HDZIT-QRF23'  //申请的key
								});
								qqmapsdk.reverseGeocoder({
      
      
									location,
								    success: function(res) {
      
      
										let info = res.result;
										location.province = info.address_component.province;
										location.city = info.address_component.city;
										location.area = info.address_component.district;
										location.street = info.address_component.street;
										location.address = info.address;
										console.log(location);
			                        },
								});
							},	
							fail: function(err) {
      
      
								uni.showToast({
      
      
										title: '获取定位失败',
										icon: 'none'
								})
							}
						})
					}
				})
			},
		},
		onLoad() {
      
      
			this.getLocation() //获取当前定位
		},
	}
</script>
<style scoped>
	.ditu {
      
      
		width: 100vw;
		height: 565rpx;
	}
</style>
2. エラー処理

直接実行すると下図のエラーが表示されます

ここに画像の説明を挿入

**理由:** 2022 年 7 月以降、新しく開発されたアプレットがユーザーの位置情報を取得したい場合は、まず申請してから、app.json で設定してから使用する必要があります。

ここに画像の説明を挿入

3. アプリケーションの許可

WeChat開発者ツールで権限を申請する

[開発] –> [開発管理] –> [インターフェイス設定] を選択し、ニーズとアプレットに適用する権限があるかどうかに応じて、対応するインターフェイスを適用します。

ここに画像の説明を挿入

4. コード構成

現時点で設定が必要なインターフェースは以下の通りです(公式ドキュメント参照

ここに画像の説明を挿入

uniapp の unpackage > dist > dev > mp-weixin > app.json でコードを構成するだけです。

"requiredPrivateInfos": [ 
    "getLocation",
    "onLocationChange",
    "startLocationUpdateBackground",
    "chooseAddress"
  ]

最後に、位置アドレスを取得できます

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/weixin_53156345/article/details/130738858