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 相关文章推荐
精选的10款用于构建良好易用性网站的jQuery插件
Jan 23 Javascript
jQuery$命名冲突怎么办如何解决
Jan 16 Javascript
javascript常见用法总结
May 22 Javascript
jQuery预加载图片常用方法
Jun 15 Javascript
轻松实现js图片预览功能
Jan 18 Javascript
node.js学习之base64编码解码
Oct 21 Javascript
JS仿淘宝搜索框用户输入事件的实现
Jun 19 Javascript
详解vue项目首页加载速度优化
Oct 18 Javascript
Vue组件创建和传值的方法
Aug 17 Javascript
Node.js 使用request模块下载文件的实例
Sep 05 Javascript
浅谈Vue.js 关于页面加载完成后执行一个方法的问题
Apr 01 Javascript
vue自定义js图片碎片轮播图切换效果的实现代码
Apr 28 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
实现 win2003 下 mysql 数据库每天自动备份
2006/12/06 PHP
NOD32 v2.70.32 简体中文封装版 提供下载了
2007/02/27 PHP
使用Smarty 获取当前日期时间和格式化日期时间的方法详解
2013/06/18 PHP
PHP文件上传判断file是否己选择上传文件的方法
2014/11/10 PHP
UpdatePanel和Jquery冲突的解决方法
2013/04/01 Javascript
js动态设置div的值下例子
2013/10/29 Javascript
关于编写性能高效的javascript事件的技术
2014/11/28 Javascript
PHP 数组current和next用法分享
2015/03/05 Javascript
分享网页检测摇一摇实例代码
2016/01/14 Javascript
详解如何使用Node.js编写命令工具——以vue-cli为例
2017/06/29 Javascript
轻松玩转BootstrapTable(后端使用SpringMVC+Hibernate)
2017/09/06 Javascript
angularjs 获取默认选中的单选按钮的value方法
2018/02/28 Javascript
详解基于vue的服务端渲染框架NUXT
2018/06/20 Javascript
ES6中let 和 const 的新特性
2018/09/03 Javascript
简单实现vue中的依赖收集与响应的方法
2019/02/18 Javascript
Vue的H5页面唤起支付宝支付功能
2019/04/18 Javascript
vue项目中自定义video视频控制条的实现代码
2020/04/26 Javascript
完美解决vue 中多个echarts图表自适应的问题
2020/07/19 Javascript
antd design table更改某行数据的样式操作
2020/10/31 Javascript
Python第三方库的安装方法总结
2016/06/06 Python
python dataframe 输出结果整行显示的方法
2018/06/14 Python
Python eval的常见错误封装及利用原理详解
2019/03/26 Python
解决Tensorboard可视化错误:不显示数据 No scalar data was found
2020/02/15 Python
python数据预处理 :数据抽样解析
2020/02/24 Python
Python GUI库PyQt5样式QSS子控件介绍
2020/02/25 Python
NBA德国官方网上商店:NBA Store德国
2018/04/13 全球购物
说出一些常用的类,包,接口
2014/09/22 面试题
亲戚结婚的请假条
2014/02/11 职场文书
业务内勤岗位职责
2014/04/30 职场文书
公司总经理任命书
2014/06/05 职场文书
个人政风行风自查自纠报告
2014/10/21 职场文书
无财产离婚协议书范本
2014/10/28 职场文书
2015年超市收银员工作总结
2015/04/25 职场文书
情侣餐厅的创业计划书范本!
2019/07/26 职场文书
MySQL 如何设计统计数据表
2021/06/15 MySQL
JavaScript中的LHS和RHS分析详情
2022/04/06 Javascript