如何使用Cordova Geolocation API进行反向地理编码以获得城市和国家?

时间:2015-07-18 19:47:09

标签: javascript cordova geolocation hybrid-mobile-app reverse-geocoding

我正在使用面向用户界面的英特尔App Framework和Cordova构建混合移动应用程序,以访问本机设备功能。

作为开发的一部分,我需要获取用户的位置(城市和国家/地区)并在文本框中显示。

通过使用下面的代码,我可以获得纬度和经度并将其显示在两个不同的文本框中(分别具有ID纬度和经度)。如何将纬度和经度转换为城市和乡村。

  function Geolocation() {
                    var onSuccess = function(position) {
                        document.getElementById('latitude').value = position.coords.latitude;
                        document.getElementById('longitude').value = position.coords.longitude;                    
                    };
                    var onFail = function() {
                        navigator.notification.alert('Cannot get the location');
                    };
                    navigator.geolocation.getCurrentPosition(onSuccess, onFail, {maximumAge:0, timeout:5000, enableHighAccuracy: true});
                }  

注意 - 除了Cordova的地理位置之外,我不会使用任何其他插件来处理我的应用中的位置服务。这是一个混合应用程序,但目前我正在开发应用程序的Android版本。

1 个答案:

答案 0 :(得分:9)

这被称为反向地理编码有很多服务要做 - 例如。谷歌地图,OpenStreetMaps等等。

我喜欢OpenStreetMaps,因为它非常容易非常。只是一个JSONP回调:

  

http://nominatim.openstreetmap.org/reverse?lat=-23.5880894&lon=-46.6321951&format=json&json_callback=my_callback

因此,您只需向此URL发出Ajax请求即可获得所需的值。例如:

function titleCase(str) {
  var newstr = str.split(" ");
  for(i=0;i<newstr.length;i++){
    if(newstr[i] == "") continue;
    var copy = newstr[i].substring(1).toLowerCase();
    newstr[i] = newstr[i][0].toUpperCase() + copy;
  }
   newstr = newstr.join(" ");
   return newstr;
}