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 相关文章推荐
js过滤数组重复元素的方法
Sep 05 Javascript
关于js new Date() 出现NaN 的分析
Oct 23 Javascript
js统计录入文本框中字符的个数并加以限制不超过多少
May 23 Javascript
JQuery中attr方法和removeAttr方法用法实例
May 18 Javascript
js实现网页多级级联菜单代码
Aug 20 Javascript
js实现图片放大和拖拽特效代码分享
Sep 05 Javascript
JavaScript+CSS实现的可折叠二级菜单实例
Feb 29 Javascript
轻松实现jquery选项卡切换效果
Oct 10 Javascript
拖动时防止选中
Feb 03 Javascript
js判断用户是输入的地址请求的路径(实例讲解)
Jul 18 Javascript
React diff算法的实现示例
Apr 20 Javascript
微信小程序云开发之云函数详解
May 16 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
动态新闻发布的实现及其技巧
2006/10/09 PHP
php5.5中类级别的常量使用介绍
2013/10/02 PHP
调试PHP程序的多种方法介绍
2014/11/06 PHP
PHP使用PHPexcel导入导出数据的方法
2015/11/14 PHP
php HTML无刷新提交表单
2016/04/05 PHP
php抽奖概率算法(刮刮卡,大转盘)
2020/04/17 PHP
Ajax中的JSON格式与php传输过程全面解析
2017/11/14 PHP
JavaScript 函数式编程的原理
2009/10/16 Javascript
Span元素的width属性无效果原因及解决方案
2010/01/15 Javascript
跟着Jquery API学Jquery之一 选择器
2010/04/07 Javascript
javascript string字符串优化问题
2011/07/31 Javascript
javascript高级程序设计第二版第十二章事件要点总结(常用的跨浏览器检测方法)
2012/08/22 Javascript
获取offsetTop和offsetLeft值的js代码(兼容)
2013/04/16 Javascript
JQuery 文本框回车跳到下一个文本框示例代码
2013/08/30 Javascript
21个值得收藏的Javascript技巧
2014/02/04 Javascript
浅谈jQuery中setInterval()方法
2015/07/07 Javascript
基于JavaScript怎么实现让歌词滚动播放
2015/11/03 Javascript
js实现简单的省市县三级联动效果实例
2016/02/18 Javascript
Three.js学习之几何形状
2016/08/01 Javascript
Vue开发过程中遇到的疑惑知识点总结
2017/01/20 Javascript
Vue 表单控件绑定的实现示例
2017/08/11 Javascript
vue组件传递对象中实现单向绑定的示例
2018/02/28 Javascript
讲解vue-router之什么是动态路由
2018/05/28 Javascript
ES6 Set结构的应用实例分析
2019/06/26 Javascript
小程序外卖订单界面的示例代码
2019/12/30 Javascript
为Python程序添加图形化界面的教程
2015/04/29 Python
Python弹出输入框并获取输入值的实例
2019/06/18 Python
python中的split()函数和os.path.split()函数使用详解
2019/12/21 Python
python如何获得list或numpy数组中最大元素对应的索引
2020/11/16 Python
学校办公室主任职责
2013/12/27 职场文书
祖国在我心中演讲稿(小学生)
2014/09/23 职场文书
党支部班子“四风”问题自我剖析材料
2014/09/28 职场文书
2014年学校安全工作总结
2014/11/13 职场文书
征求意见函
2015/06/05 职场文书
英语版自我评价,35句话轻松搞定
2019/10/08 职场文书
Python中itertools库的四个函数介绍
2022/04/06 Python