如何使用Ionic检索纬度和经度?

时间:2016-08-04 06:21:55

标签: android cordova ionic-framework geolocation navigator

如何使用Ionic Framework获取纬度/经度。在Android中,它有时会按预期提供,有时它不会使用以下内容给出纬度/经度:

navigator.geolocation.getCurrentPosition(onSuccess, onError, options);  

3 个答案:

答案 0 :(得分:2)

您可以使用对返回JSON对象的URL API的调用,然后获取纬度和经度。以下示例调用http://freegeoip.net/json/并打印出结果。要访问纬度和经度,您可以使用result.latituderesult.longitude字段。

<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script>
$(document).ready(function(){
    $("button").click(function(){
        $.getJSON("http://freegeoip.net/json/", function(result){
            $.each(result, function(i, field){
                $("div").append(field + " ");
            });
        });
    });
});
</script>
</head>
<body>

<button>Get JSON data</button>

<div></div>

</body>
</html>

答案 1 :(得分:1)

这是一个如何使用https://github.com/apache/cordova-plugin-geolocation

获取Lat,Long的示例
.controller('MyCtrl', function($scope, $cordovaGeolocation) {
   var posOptions = {timeout: 10000, enableHighAccuracy: false};
   $cordovaGeolocation
   .getCurrentPosition(posOptions)

   .then(function (position) {
      var lat  = position.coords.latitude
      var long = position.coords.longitude
      console.log(lat + '   ' + long)
   }, function(err) {
      console.log(err)
   });

   var watchOptions = {timeout : 3000, enableHighAccuracy: false};
   var watch = $cordovaGeolocation.watchPosition(watchOptions);

   watch.then(
      null,

      function(err) {
         console.log(err)
      },

      function(position) {
         var lat  = position.coords.latitude
         var long = position.coords.longitude
         console.log(lat + '' + long)
      }
   );

   watch.clearWatch();

})

您还注意到了posOptions和watchOptions对象。我们使用超时来调整允许以毫秒为单位的最大时间长度,并将enableHighAccuracy设置为false。它可以设置为true以获得最佳结果,但有时可能会导致一些错误。还有maximumAge选项可用于显示接受旧位置的方式。它使用毫秒,与超时选项相同。

当我们启动应用程序并打开控制台时,它将记录设备的经度和纬度。当我们的位置发生变化时,纬度和长值将会改变。

答案 2 :(得分:0)

不太确定你在这里问的是什么,但是Ionic不能给你地理位置,但是Cordova可以。如果你想让自己变得容易,你应该研究一下ngCordova,它是一个用于cordova插件的角度包装器。看看这里:http://ngcordova.com/docs/plugins/geolocation/