AngularJS,传单。如何从第三方服务动态获取纬度和经度坐标?

米哈伊尔

我有一个简单的应用程序通过纬度和经度坐标显示您的当前位置,并在地图上显示。但是目前它是静态的,必须手动指定坐标。应用的完整代码:

  1. index.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title></title>
        <link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
        <link rel="stylesheet" type="text/css" href="http://cdn.leafletjs.com/leaflet/v0.7.7/leaflet.css" />
        <link rel="stylesheet" type="text/css" href="css/main.css">
        <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"></script>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/angular-leaflet-directive/0.10.0/angular-leaflet-directive.min.js"></script>
        <script src="https://code.angularjs.org/1.2.28/angular-route.min.js"></script>
        <script src="http://cdn.leafletjs.com/leaflet/v0.7.7/leaflet.js"></script>
    </head>
        <body ng-app="NearMeApp">
    
            <div class="header">
                <div class="container-fluid">
                    <h1 class="pull-left">NearMe</h1>
                    <a class="pull-right" href="#/about">About</a>
                </div>
            </div>
    
            <div ng-view></div>
    
            <script src="js/app.js"></script>
    
            <script src="js/controllers/MainController.js"></script>
            <script src="js/controllers/AboutController.js"></script>
    
        </body>
    </html>
    
  2. pasteBin上的main.css

  3. main.html

    <div class="main">
        <div class="container-fluid" id="map-canvas">
            <leaflet center="mapCenter"></leaflet>
        </div>
    </div>
    
  4. about.html

    <div class="about">
        <div class="container-fluid">
            <h1>Meet NearMe</h1>
            <h2>The best place to discover new places around you.</h2>
            <a class="btn btn-primary" href="#/">Start exploring</a>
        </div>
    </div>
    
  5. app.js

    var app = angular.module('NearMeApp', ['ngRoute', 'leaflet-directive']);
    
    app.config(function($routeProvider) {
        $routeProvider
        .when('/', {
            controller: 'MainController',
            templateUrl: 'views/main.html'
        })
        .when('/about', {
            controller: 'AboutController',
            templateUrl: 'views/about.html'
        })
        .otherwise({
            redirectTo: '/'
        });
    
    });
    
  6. AboutController.js

    app.controller('AboutController', ['$scope', function($scope) {
    
    }]);
    
  7. MainController.js

    app.controller('MainController', ['$scope', function($scope) {
    
        $scope.mapCenter = {
            lat: 40.741934,
            lng: -74.004897,
            zoom: 17
        };
    
    }]);
    

如何从第三方服务动态获取经纬度?例如,来自JSON IP API

我听说可以通过某种方式获取JSON数据

app.factory('latlon', ['$http', function($http) {
    return $http.get('http://ip-api.com/json')
        .success(function(data) {
            return data;
        })
        .error(function(err) {
            return err;
        });
}]);

但我不知道该怎么做以及如何使用它。您能帮我解决这个问题吗?


解决了

问题解决了

MainController.js

app.controller('MainController', ['$scope', '$http', function($scope, $http) {
    $scope.mapCenter = {};
    $http.get('http://ip-api.com/json')
        .success(function(data) {

            $scope.mapCenter.lat = data.lat;
            $scope.mapCenter.lng = data.lon;
            $scope.mapCenter.zoom = 17;

        });
}]);
震惊的男孩

不太清楚您的意思是“如何确保数据(纬度和经度)是动态变化的”,但是您可以利用HTML5地理位置函数:navigator.geolocation.getCurrentPosition(success[, error[, options]])

您应该将其抽象到单独的服务或工厂中,以使其更可重用,并避免依赖于 window

angular.module('app', []).factory('GeolocationService', ['$q', '$window', function ($q, $window) {

    function getPosition() {
      var deferred = $q.defer();

      if (!$window.navigator.geolocation) { // check if geolocation is supported
        deferred.reject('Geolocation is not supported.');
        return;
    }

    $window.navigator.geolocation.getCurrentPosition( // get the current position 
        function (position) { // ok
            deferred.resolve(position);
        },
        function (err) { // error
            deferred.reject(err);
        });

    return deferred.promise; // returned as a promise
  }

  return {
    getCurrentPosition: getCurrentPosition
  };
}]);

然后您可以从控制器中调用它,就像这样

geolocationSvc.getPosition().then(
   function success(position){
     $scope.mapCenter = {
      lat: pos.coords.latitude,
      lng: pos.coords.longitude,
      zoom: 17      
}, 
function error(err){
  console.log('ERROR(' + err.code + '): ' + err.message);
});

请注意,该代码尚未经过实际测试,但应为您提供如何实现的概述。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

AngularJS服务初始化并获取第三方组件

来自分类Dev

如何在DTM中的第三方广告代码中获取动态值?

来自分类Dev

第三方服务整合

来自分类Dev

AngularJS登录Twitter和linkedin自定义而无需oath0第三方服务

来自分类Dev

Android从第三方定义的权限获取动态权限

来自分类Dev

AngularJS 不适用于第三方预渲染服务

来自分类Dev

如何从 rc 滑块第三方组件中获取最小值和最大值

来自分类Dev

在JS中获取当前IP(无第三方服务)

来自分类Dev

EasyXDM:从第三方服务下载文件

来自分类Dev

解析集成第三方服务

来自分类Dev

EasyXDM:从第三方服务下载文件

来自分类Dev

AWS IOT到第三方DynamoDB服务

来自分类Dev

使用领事监控第三方服务

来自分类Dev

第三方地址上的服务 AutoDiscoverUrl

来自分类Dev

使用密码凭证流和某些第三方授权服务器

来自分类Dev

如何在客户端blazor中动态加载第三方javascript?

来自分类Dev

如何在 Angular 中动态嵌入来自 Cloudinary 的第三方 javascript 小部件?

来自分类Dev

获取Java中的第三方库版本

来自分类Dev

从第三方Wiki页面获取信息

来自分类Dev

通过第三方应用程序配置和访问AngularJS $ scope

来自分类Dev

如何以编程方式从客户端捕获第三方Web服务xml

来自分类Dev

如何在Spring MVC中使用第三方WSDL服务

来自分类Dev

如何在“第三方服务器”上对GKLocalPlayer进行身份验证?

来自分类Dev

如何定期将Redis数据发送给第三方服务?

来自分类Dev

如何使用cxf componnet使用Apache骆驼调用第三方Web服务

来自分类Dev

如何在C#中使用第三方https wsdl Web服务

来自分类Dev

如何使用.NET解析此第三方JSON服务?

来自分类Dev

如何通过第三方许可服务从卖方获得退款许可

来自分类Dev

如何向第三方服务器发出承诺电话?

Related 相关文章

  1. 1

    AngularJS服务初始化并获取第三方组件

  2. 2

    如何在DTM中的第三方广告代码中获取动态值?

  3. 3

    第三方服务整合

  4. 4

    AngularJS登录Twitter和linkedin自定义而无需oath0第三方服务

  5. 5

    Android从第三方定义的权限获取动态权限

  6. 6

    AngularJS 不适用于第三方预渲染服务

  7. 7

    如何从 rc 滑块第三方组件中获取最小值和最大值

  8. 8

    在JS中获取当前IP(无第三方服务)

  9. 9

    EasyXDM:从第三方服务下载文件

  10. 10

    解析集成第三方服务

  11. 11

    EasyXDM:从第三方服务下载文件

  12. 12

    AWS IOT到第三方DynamoDB服务

  13. 13

    使用领事监控第三方服务

  14. 14

    第三方地址上的服务 AutoDiscoverUrl

  15. 15

    使用密码凭证流和某些第三方授权服务器

  16. 16

    如何在客户端blazor中动态加载第三方javascript?

  17. 17

    如何在 Angular 中动态嵌入来自 Cloudinary 的第三方 javascript 小部件?

  18. 18

    获取Java中的第三方库版本

  19. 19

    从第三方Wiki页面获取信息

  20. 20

    通过第三方应用程序配置和访问AngularJS $ scope

  21. 21

    如何以编程方式从客户端捕获第三方Web服务xml

  22. 22

    如何在Spring MVC中使用第三方WSDL服务

  23. 23

    如何在“第三方服务器”上对GKLocalPlayer进行身份验证?

  24. 24

    如何定期将Redis数据发送给第三方服务?

  25. 25

    如何使用cxf componnet使用Apache骆驼调用第三方Web服务

  26. 26

    如何在C#中使用第三方https wsdl Web服务

  27. 27

    如何使用.NET解析此第三方JSON服务?

  28. 28

    如何通过第三方许可服务从卖方获得退款许可

  29. 29

    如何向第三方服务器发出承诺电话?

热门标签

归档