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 相关文章推荐
表单提交验证类
Jul 14 Javascript
推荐30个新鲜出炉的精美 jQuery 效果
Mar 26 Javascript
jQuery学习笔记之jQuery动画效果
Sep 09 Javascript
javascript编写贪吃蛇游戏
Jul 07 Javascript
AngularJS基础 ng-model-options 指令简单示例
Aug 02 Javascript
同步异步动态引入js文件的几种方法总结
Sep 23 Javascript
可输入文字查找ajax下拉框控件 ComBox的实现方法
Oct 25 Javascript
解决给dom元素绑定click等事件无效问题的方法
Feb 17 Javascript
JS代码实现电脑配置检测功能
Mar 21 Javascript
vue实现同一个页面可以有多个router-view的方法
Sep 20 Javascript
使用webpack编译es6代码的方法步骤
Apr 28 Javascript
基于ssm框架实现layui分页效果
Jul 27 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 截取字符串并以零补齐str_pad() 函数
2011/05/07 PHP
WordPress中获取页面链接和标题的相关PHP函数用法解析
2015/12/17 PHP
laravel Model 执行事务的实现
2019/10/10 PHP
Laravel 登录后清空COOKIE的操作方法
2019/10/14 PHP
PHP常用函数之根据生日计算年龄功能示例
2019/10/21 PHP
基于jquery的finkyUI插件与Ajax实现页面数据加载功能
2010/12/03 Javascript
当滚动条滚动到页面底部自动加载增加内容的js代码
2014/05/13 Javascript
js脚本分页代码分享(7种样式)
2015/08/19 Javascript
利用jquery制作滚动到指定位置触发动画
2016/03/26 Javascript
基于jquery实现的银行卡号每隔4位自动插入空格的实现代码
2016/11/22 Javascript
详解Vue.js 2.0 如何使用axios
2017/04/21 Javascript
详解vue嵌套路由-params传递参数
2017/05/23 Javascript
Vue在页面右上角实现可悬浮/隐藏的系统菜单
2018/05/04 Javascript
JavaScript笛卡尔积超简单实现算法示例
2018/07/30 Javascript
puppeteer实现html截图的示例代码
2019/01/10 Javascript
Vue源码之关于vm.$delete()/Vue.use()内部原理详解
2019/05/01 Javascript
vue项目中实现缓存的最佳方案详解
2019/07/11 Javascript
js生成1到100的随机数最简单的实现方法
2020/02/07 Javascript
vue将文件/图片批量打包下载zip的教程
2020/10/21 Javascript
antd的select下拉框因为数据量太大造成卡顿的解决方式
2020/10/31 Javascript
Python时区设置方法与pytz查询时区教程
2013/11/27 Python
请不要重复犯我在学习Python和Linux系统上的错误
2016/12/12 Python
Python使用cx_Oracle调用Oracle存储过程的方法示例
2017/10/07 Python
DataFrame 将某列数据转为数组的方法
2018/04/13 Python
python使用ddt过程中遇到的问题及解决方案【推荐】
2018/10/29 Python
python遍历小写英文字母的方法
2019/01/02 Python
Python实现将蓝底照片转化为白底照片功能完整实例
2019/12/13 Python
python数据类型强制转换实例详解
2020/06/22 Python
Python3爬虫中Selenium的用法详解
2020/07/10 Python
如何让PyQt5中QWebEngineView与JavaScript交互
2020/10/21 Python
您的时尚,您的生活方式:DTLR Villa
2019/12/25 全球购物
汽车维修专业个人求职信范文
2014/01/01 职场文书
纪念九一八事变演讲稿:青少年应树立远大理想
2014/09/14 职场文书
教师个人考察材料
2014/12/16 职场文书
安全生产警示教育活动总结
2015/05/09 职场文书
共青团优秀团员申请书(范文)
2019/08/15 职场文书