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 相关文章推荐
struts2 jquery 打造无限层次的树
Oct 23 Javascript
JavaScript新窗口与子窗口传值详解
Feb 11 Javascript
无刷新预览所选择的图片示例代码
Apr 02 Javascript
js打开windows上的可执行文件示例
May 27 Javascript
Dojo Javascript 编程规范 规范自己的JavaScript书写
Oct 26 Javascript
封装了jQuery的Ajax请求全局配置
Feb 05 Javascript
JavaScript通过filereader接口读取文件
May 10 Javascript
vue.js使用3DES加密的方法示例
May 18 Javascript
详解浏览器缓存和webpack缓存配置
Jul 06 Javascript
js实现通过开始结束控制的计时器
Feb 25 Javascript
在vue中获取微信支付code及code被占用问题的解决方法
Apr 16 Javascript
JS画布动态实现黑客帝国背景效果
Nov 08 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 连接mysql连接被重置的解决方法
2011/02/15 PHP
PHP中文件缓存转内存缓存的方法
2011/12/06 PHP
基于PHP5魔术常量与魔术方法的详解
2013/06/13 PHP
PHP实现根据浏览器跳转不同语言页面代码
2013/08/02 PHP
PHP中使用foreach()遍历二维数组的简单实例
2016/06/13 PHP
php实现登陆模块功能示例
2016/10/20 PHP
JavaScript 全面解析各种浏览器网页中的JS 执行顺序
2009/02/17 Javascript
javascript dom 操作详解 js加强
2009/07/13 Javascript
js 创建书签小工具之理论
2011/02/25 Javascript
jQuery autocomplate 自扩展插件、自动完成示例代码
2011/03/28 Javascript
JS的replace方法详细介绍
2012/11/09 Javascript
PHP+mysql+Highcharts生成饼状图
2015/05/04 Javascript
浅谈React和Redux的连接react-redux
2017/12/04 Javascript
Django与Vue语法的冲突问题完美解决方法
2017/12/14 Javascript
微信小程序icon组件使用详解
2018/01/31 Javascript
在Vue组件中使用 TypeScript的方法
2018/02/28 Javascript
微信小程序如何访问公众号文章
2019/07/08 Javascript
Vue路由守卫之路由独享守卫
2019/09/25 Javascript
JS轮播图的实现方法
2020/08/24 Javascript
对Python中的@classmethod用法详解
2018/04/21 Python
python获取指定日期范围内的每一天,每个月,每季度的方法
2019/08/08 Python
Pyspark读取parquet数据过程解析
2020/03/27 Python
python飞机大战游戏实例讲解
2020/12/04 Python
Html5 video标签视频的最佳实践
2020/02/26 HTML / CSS
美国家居装饰网上商店:Lulu & Georgia
2019/09/14 全球购物
shallow copy和deep copy的区别
2016/05/09 面试题
小学运动会入场式解说词
2014/02/18 职场文书
公司业务员岗位职责
2014/03/18 职场文书
揭牌仪式主持词
2014/03/19 职场文书
机关保密承诺书
2014/06/03 职场文书
安全生产知识竞赛活动总结
2014/07/07 职场文书
党员自我对照检查材料
2014/08/19 职场文书
学校个人对照检查材料
2014/08/26 职场文书
行政专员岗位职责说明书
2014/09/01 职场文书
2015高考寄语集锦
2015/02/27 职场文书
写给同学的新学期寄语
2015/02/27 职场文书