uniappにおいてAPP側でuni.getLocationを呼び出すとアドレスが取得できない場合がある問題の解決方法

uniappにおいてAPP側でuni.getLocationを呼び出すとアドレスが取得できない場合がある問題の解決方法

1. ジオコードを true に設定します。

uni.getLocation({
    
    
    type: 'wgs84',
    geocode:true,//设置该参数为true可直接获取经纬度及城市信息
    success: function (res) {
    
    
        console.log('获取定位信息',res);
    },
    fail: function (err) {
    
    
        console.log("获取定位失败",err);
        uni.showToast({
    
    
            title: '获取定位失败',
            icon:'none'
        });
    }
});

通常であれば、この時点で res.address からアドレス情報を取得できます。

【参考ドキュメント】:https://uniapp.dcloud.io/api/location/location?id=getlocation

[外部リンク画像の転送に失敗しました。ソース サイトにはリーチ防止メカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-lOJEIdlK-1640680878054) (C:\Users\Administrator\AppData\Roaming\Typora\) typora-user-images\ image-20211228161204165.png)]

2. 特殊な状況: geocode が true に設定されていても、住所情報を取得できません。

現時点ではエラーは報告されず、緯度と経度の情報のみを取得できます。返される情報は次のとおりです。

{
    
    
	"type": "wgs84",
	"altitude": 0,
	"latitude": 34.806316,
	"longitude": 113.685944,
	"speed": 0,
	"accuracy": 40,
	"errMsg": "getLocation:ok"
}

plus.maps.Map.reverseGeocodeこのような場合は、次のメソッドを使用してアドレス情報を取得できます。

【参考資料】:https://www.html5plus.org/doc/zh_cn/maps.html#plus.maps.Map.reverseGeocode

// #ifdef APP
uni.getLocation({
    
    
    type: 'wgs84',
    geocode:true,//设置该参数为true可直接获取经纬度及城市信息
    success: function (res) {
    
    
        console.log('获取定位信息',res);
        
        // 创建地图坐标对象
        var point = new plus.maps.Point(res.longitude, res.latitude);
        //静态方法,反向地理编码
        plus.maps.Map.reverseGeocode(point, {
    
    },(event)=>{
    
    
            var address = event.address; // 转换后的地理位置
            var point = event.coord; // 转换后的坐标信息
            var coordType = event.coordType; // 转换后的坐标系类型
            var reg = /.+?(省|市|自治区|自治州|县|区)/g;
            var addressList = address.match(reg).toString().split(",");
            //注意 因为存在直辖市, 当所在地区为普通省市时,addressList.length == 3,city = addressList[1];当所在地区为直辖市时addressList.length == 2,city = addressList[0];
            let city = addressList.length == 3?addressList[1]:addressList[0];
            console.log("addressList",addressList);
            },
        	function(e) {
    
    
            	console.log("失败回调",e);
        	}
        );
    },
    fail: function (err) {
    
    
        console.log("获取定位失败",err);
        uni.showToast({
    
    
            title: '获取定位失败',
            icon:'none'
        });
    }
});
// #endif

//なお、市区町村が存在するため、その地域が一般の州または市の場合は、addressList.length == 3, city = addressList[1]、地域が市区町村の場合は、addressList.length == 2, cityとなります。 = addressList[0];
取得した情報はaddressList以下の通りです。

普通省市:["河南省", "郑州市", "金水区"]
直辖市:["上海市", "浦东新区"]

おすすめ

転載: blog.csdn.net/m0_52459016/article/details/122196985