如何获得经纬度地理坐标?

Posted

技术标签:

【中文标题】如何获得经纬度地理坐标?【英文标题】:How to get lat and lon geolocation coordinates? 【发布时间】:2015-12-15 03:42:44 【问题描述】:

我有应用程序通过纬度和经度坐标显示您当前的位置,并显示在地图上。在这个应用程序中还有一个功能显示标记表示景点。我使用 lat 和 lon 坐标从 api wiki 获得这些标记。 但问题是此时的坐标是完全静态的,必须自己写到代码中。我如何从第三方服务动态获取纬度和经度?比如来自JSON IP API

当前负责检索数据的代码

app.factory('places', ['$http', function($http) 

    return $http.jsonp('https://en.wikipedia.org/w/api.php?action=query&list=geosearch&gsradius=5000&gscoord=' + 43.1056 + '%7C' + 131.8735 + '&gslimit=30&format=json&callback=JSON_CALLBACK')
        .success(function(data) 
            return data
        )
        .error(function(err) 
            return err
        )

])

我试图做到这一点

app.factory('places', ['$http', '$scope', function($http, $scope) 

  $scope.coordinates = ;
  $http.get('http://ip-api.com/json')
    .success(function(data) 
      $scope.coordinates.lat = data.lat;
      $scope.coordinates.lon = data.lon;
    );

    return $http.jsonp('https://en.wikipedia.org/w/api.php?action=query&list=geosearch&gsradius=5000&gscoord=' + coordinates.lat + '%7C' + coordinates.lon + '&gslimit=30&format=json&callback=JSON_CALLBACK')
        .success(function(data) 
            return data
        )
        .error(function(err) 
            return err
        )

])

app.factory('places', ['$http', function($http) 

  $http.get('http://ip-api.com/json')
    .success(function(coordinates) 
         return $http.jsonp('https://en.wikipedia.org/w/api.php?action=query&list=geosearch&gsradius=5000&gscoord=' + coordinates.lat + '%7C' + coordinates.lon + '&gslimit=30&format=json&callback=JSON_CALLBACK')
                .success(function(data) 
                    return data
                )
                .error(function(err) 
                    return err
                )
    );

])

但它不起作用。你能帮我解决这个问题吗? 如果您需要查看应用程序的完整代码,可以在这里下载https://www.dropbox.com/s/qiu91hhdrc0qy5o/GeoApp.rar?dl=0

【问题讨论】:

【参考方案1】:

您可以使用浏览器的 html5 功能,只需编写一个函数即可获取当前坐标:

var deferred;

$scope.currentPosition = function() 
    deferred = $q.defer();

    if (window.navigator && window.navigator.geolocation) 
        window.navigator.geolocation.getCurrentPosition(currentPosition, handleErrorOnTrackCurrentPosition);
     else 
        deferred.reject(msg: "Browser does not supports HTML5 geolocation");
    
    return deferred.promise;
;

function currentPosition(position) 
    deferred.resolve(latitude: position.coords.latitude, longitude: position.coords.longitude);


function handleError(error) 
    deferred.reject(msg: error.message);

现在,当你想获取当前坐标时,只需写:

$scope.currentPosition().then(function(data) 
    console.log(data.latitude, data.longitude);
);

【讨论】:

以上是关于如何获得经纬度地理坐标?的主要内容,如果未能解决你的问题,请参考以下文章

如何实现地理位置与经纬度坐标的批量转换

如何把地理位置的经纬度坐标转换为unity3d的系统坐标

经纬度坐标和地理坐标有啥不同,怎么转换

WGS84的经纬度,怎么转化为地理坐标(X,Y)

经纬度转换XY地理坐标,急谢

任何免费服务或 API 将提供地理坐标(纬度和经度)? [关闭]