AngularJs 利用百度地图API 定位当前位置 获取地址信息


Posted in Javascript onJanuary 18, 2017

第一、申请百度密钥  很简单的几步就搞定

第二、引入文件

<!-- 百度地图定位 -->
<script src="http://api.map.baidu.com/components?ak=WUfZTjKPuZ2G5RmgD0Psejv6XOmIEQVQ"></script> 
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=WUfZTjKPuZ2G5RmgD0Psejv6XOmIEQVQ"></script>

第三、绑定数据到你要显示的输入框内

完整地址:<input type="text" ng-model="all"/><br>
所处城市:<input type="text" ng-model="shi"/><br>
所处区域:<input type="text" ng-model="qu"/><br>
所处街道:<input type="text" ng-model="jiedao"/>

第四、控制器中代码

angular.module('myApp')
.controller('myCtrl',function($scope) {
 //获取地理位置信息 
   $scope.getAddr = function() { 
    var geolocation = new BMap.Geolocation(); 
    geolocation.getCurrentPosition( 
     //获取位置信息成功 
     function(position){ 
      if(this.getStatus() == BMAP_STATUS_SUCCESS){ 
       $scope.longitude = position.point.lng; 
       $scope.latitude = position.point.lat; 
       // 根据坐标得到地址描述  
       $scope.getGeo(); 
      }  
     },{ 
      // 指示浏览器获取高精度的位置,默认为false 
      enableHighAccuracy: true, 
      // 指定获取地理位置的超时时间,默认不限时,单位为毫秒 
      // timeout: 5000, 
      // 最长有效期(30S),在重复获取地理位置时,此参数指定多久再次获取位置 
      maximumAge: 30*1000 
     }); 
   }; 
  $scope.getGeo = function() {
  var myGeo = new BMap.Geocoder();
  // 根据坐标得到地址描述
  myGeo.getLocation(new BMap.Point($scope.longitude,$scope.latitude),
  function(result) {
   if (result) {
   $scope.geoaddress = {
   'fulladdress' : result.addressComponents.city+ result.addressComponents.district+ result.addressComponents.street,
   'city' : result.addressComponents.city,
   'area' : result.addressComponents.district,
   'street' : result.addressComponents.street,
   };
   $scope.all = result.addressComponents.city+ result.addressComponents.district+ result.addressComponents.street;
   $scope.shi = result.addressComponents.city;
   $scope.qu = result.addressComponents.district;
   $scope.jiedao = result.addressComponents.street;
   alert(JSON.stringify($scope.all))
   } else {
   $scope.showAlert("定位失败,地址解析失败");
   }
  });
  };
  } ]);

第五、完整代码如下:(大体思路就是这样!这里做个标记留给以后的自己)

<!DOCTYPE html>
<html>
<meta charset="utf-8">
<script src="http://cdn.static.runoob.com/libs/angular.js/1.4.6/angular.min.js"></script>
<script src="http://api.map.baidu.com/components?ak=WUfZTjKPuZ2G5RmgD0Psejv6XOmIEQVQ"></script> 
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=WUfZTjKPuZ2G5RmgD0Psejv6XOmIEQVQ"></script> 
<body>
<div ng-app="myApp" ng-controller="myCtrl">
<button type="button" ng-click='getAddr()'>点击定位</button><br>
完整地址:<input type="text" ng-model="all"/><br>
所处城市:<input type="text" ng-model="shi"/><br>
所处区域:<input type="text" ng-model="qu"/><br>
所处街道:<input type="text" ng-model="jiedao"/>
</div>
<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
  //获取地理位置信息 
 $scope.getAddr = function() { 
 var geolocation = new BMap.Geolocation(); 
 geolocation.getCurrentPosition( 
 //获取位置信息成功 
 function(position){ 
 if(this.getStatus() == BMAP_STATUS_SUCCESS){ 
  $scope.longitude = position.point.lng; 
  $scope.latitude = position.point.lat; 
  // 根据坐标得到地址描述  
  $scope.getGeo(); 
  }  
  },{ 
  // 指示浏览器获取高精度的位置,默认为false 
  enableHighAccuracy: true, 
  // 指定获取地理位置的超时时间,默认不限时,单位为毫秒 
  // timeout: 5000, 
  // 最长有效期(30S),在重复获取地理位置时,此参数指定多久再次获取位置 
  maximumAge: 30*1000 
  }); 
  }; 
  $scope.getGeo = function() {
  var myGeo = new BMap.Geocoder();
  // 根据坐标得到地址描述
  myGeo.getLocation(new BMap.Point($scope.longitude,$scope.latitude),
  function(result) {
  if (result) {
   $scope.geoaddress = {
   'fulladdress' : result.addressComponents.city+ result.addressComponents.district+ result.addressComponents.street,
   'city' : result.addressComponents.city,
   'area' : result.addressComponents.district,
   'street' : result.addressComponents.street,
   };
   $scope.all = result.addressComponents.city+ result.addressComponents.district+ result.addressComponents.street;
   $scope.shi = result.addressComponents.city;
   $scope.qu = result.addressComponents.district;
   $scope.jiedao = result.addressComponents.street;
   alert(JSON.stringify($scope.all))
   } else {
   $scope.showAlert("定位失败,地址解析失败");
   }
  });
  };
});
</script>
</body>
</html>

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
在JavaScript应用中使用RequireJS来实现延迟加载
Jul 01 Javascript
jQuery视差滚动效果网页实现方法经验总结
Sep 29 Javascript
js实现音频控制进度条功能
Apr 01 Javascript
jQuery Ajax自定义分页组件(jquery.loehpagerv1.0)实例详解
May 01 jQuery
详解Vue2.0里过滤器容易踩到的坑
Jun 01 Javascript
手把手搭建安装基于windows的Vue.js运行环境
Jun 12 Javascript
bootstrap 通过加减按钮实现输入框组功能
Nov 15 Javascript
JavaScript实现数值自动增加动画
Dec 28 Javascript
react项目实践之webpack-dev-serve
Sep 14 Javascript
零基础之Node.js搭建API服务器的详解
Mar 08 Javascript
JS如何实现动态添加的元素绑定事件
Nov 12 Javascript
js实现拾色器插件(ColorPicker)
May 21 Javascript
jQuery Masonry瀑布流插件使用方法详解
Jan 18 #Javascript
js实现消息滚动效果
Jan 18 #Javascript
利用Vue.js实现checkbox的全选反选效果
Jan 18 #Javascript
微信小程序的动画效果详解
Jan 18 #Javascript
详解微信小程序开发之——wx.showToast(OBJECT)的使用
Jan 18 #Javascript
bootstrap配合Masonry插件实现瀑布式布局
Jan 18 #Javascript
JavaScript字符串对象(string)基本用法示例
Jan 18 #Javascript
You might like
PHP+FFMPEG实现将视频自动转码成H264标准Mp4文件
2014/09/24 PHP
laravel中Redis队列监听中断的分析
2020/09/14 PHP
在textarea中显示html页面的javascript代码
2007/04/20 Javascript
Javascript 遍历对象中的子对象
2009/07/03 Javascript
ajax java 实现自动完成功能
2012/12/19 Javascript
jquery右下角弹出提示框示例代码
2013/10/08 Javascript
深入理解ECMAScript的几个关键语句
2016/06/01 Javascript
浅谈jquery选择器 :first与:first-child的区别
2016/11/20 Javascript
vue的toast弹窗组件实例详解
2018/05/14 Javascript
在vue项目中引入高德地图及其UI组件的方法
2018/09/04 Javascript
vue.js单文件组件中非父子组件的传值实例
2018/09/13 Javascript
vue百度地图 + 定位的详解
2019/05/13 Javascript
nodejs中实现修改用户路由功能
2019/05/24 NodeJs
解决layer.open后laydate失效的问题
2019/09/06 Javascript
Vue项目中使用mock.js的完整步骤
2021/01/12 Vue.js
[01:42:49]DOTA2-DPC中国联赛 正赛 iG vs PSG.LGD BO3 第一场 2月26日
2021/03/11 DOTA
在Python的Django框架中调用方法和处理无效变量
2015/07/15 Python
Python列表推导式、字典推导式与集合推导式用法实例分析
2018/02/07 Python
Python3.6基于正则实现的计算器示例【无优化简单注释版】
2018/06/14 Python
实例分析python3实现并发访问水平切分表
2018/09/29 Python
django 控制页面跳转的例子
2019/08/06 Python
Python 实现顺序高斯消元法示例
2019/12/09 Python
Python list运算操作代码实例解析
2020/01/20 Python
torchxrayvision包安装过程(附pytorch1.6cpu版安装)
2020/08/26 Python
设计师家具购买和委托在线市场:Viyet
2016/11/16 全球购物
德国高性价比网上药店:medpex
2017/07/09 全球购物
恶意软件的定义
2014/11/12 面试题
求职简历中的自我评价分享
2013/12/08 职场文书
银行见习期自我鉴定
2014/01/29 职场文书
资金主管岗位职责范本
2014/03/04 职场文书
体育课课后反思
2014/04/24 职场文书
2015年公路养护工作总结
2015/05/13 职场文书
计算机实训心得体会
2016/01/14 职场文书
2019个人工作计划书的格式及范文!
2019/07/04 职场文书
Django实现drf搜索过滤和排序过滤
2021/06/21 Python
配置nginx负载均衡
2022/05/06 Servers