我正在我的 Ionic 应用程序中使用本机地理编码器。
离子文档
Github Repo
这是我的提供程序中的方法 -
//This calls the Native geocoder and returns the geocoordinates.
getGeoCode(address: string): Promise<any> {
console.log('The address key is - ' + address);
return new Promise((resolve, reject) => {
this.nativeGeocoder.forwardGeocode(address)
.then((nativegeocoordinates: NativeGeocoderForwardResult) => {
console.log('The coordinates are - ' + JSON.stringify(nativegeocoordinates));
let addressCoordinates: DeliveryAddressCoordinates = nativegeocoordinates;
resolve(addressCoordinates);
})
.catch((error: any) => {
console.log(JSON.stringify(error));
reject(error);
});
})
}
该方法接受地址字符串作为输入。所以我从谷歌地方API获取地址,并在此处传递描述。
现在,对于某些地址,它似乎找不到坐标,并返回"找不到位置"消息。例如,"Bhadra Brookefields Apartment B Block, Kundanahalli Lake Road, Kundalahalli, Brookefield, Bengaluru, Karnataka, India"是一个有效的地址并返回坐标,而">Times Square 42 Street Station, New York, NY, USA">找不到匹配项并返回一条消息 - "找不到位置"。
有关更多信息,"找不到位置"似乎源自 #182 行的 cordova 插件代码,它引用了 Android 类。
这是一个已知问题吗?还是我做错了什么?
至少有另一个人认为该插件似乎有点成功/失败 - 下面对本文的评论
Ionic 2 – 地理位置和地理编码离子 2 – 地理位置和地理编码
该评论来自一位紫刃先生,我无法链接评论本身,因为它是一个disq,并且不允许Stack。
因此,我采用了可以解释为解决方案或解决方法的方法。我没有使用插件,而只是使用 api,从而发出 Http 请求以获取信息。
获取信息的方法(在提供程序中):
getGeoCodefromGoogleAPI(address: string): Observable<any> {
return this._http.get('https://maps.googleapis.com/maps/api/geocode/json?address=' + address)
.map(res => res.json());
}
方法调用 ->
this._deliveryAddressService.getGeoCodefromGoogleAPI(event.description).subscribe(addressData => {
let latitude: string = addressData.results[0].geometry.location.lat;
let longitude: string = addressData.results[0].geometry.location.lng;
}
当然,需要有注册密钥的正当程序。
这不是插件的问题。您只需要添加更多一个,以便您可以请求激活手机中High Accuracy
的权限。
https://ionicframework.com/docs/native/location-accuracy/