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 相关文章推荐
将HTML自动转为JS代码
Jun 26 Javascript
JavaScript 学习笔记之一jQuery写法图片等比缩放以及预加载
Jun 28 Javascript
javascript中为某个元素指定事件的三种方式
Aug 07 Javascript
js style动态设置table高度
Oct 21 Javascript
JavaScript实现点击文本自动定位到下拉框选中操作
Jun 15 Javascript
原生js获取元素样式的简单方法
Aug 06 Javascript
浅谈JS中的三种字符串连接方式及其性能比较
Sep 02 Javascript
JavaScript下拉菜单功能实例代码
Mar 01 Javascript
浅谈微信小程序flex布局基础
Sep 10 Javascript
详解vue数组遍历方法forEach和map的原理解析和实际应用
Nov 15 Javascript
vant(ZanUi)结合async-validator实现表单验证的方法
Dec 06 Javascript
详解微信小程序框架wepy踩坑记录(与vue对比)
Mar 12 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 _autoload自动加载类与机制分析
2012/02/10 PHP
PHP程序级守护进程的实现与优化的使用概述
2013/05/02 PHP
推荐一本PHP程序猿都应该拜读的书
2014/12/31 PHP
如何解决phpmyadmin导入数据库文件最大限制2048KB
2015/10/09 PHP
Javascript load Page,load css,load js实现代码
2010/03/31 Javascript
js 优化次数过多的循环 考虑到性能问题
2011/03/05 Javascript
JavaScript取得鼠标绝对位置程序代码介绍
2012/09/16 Javascript
Lazy Load 延迟加载图片的jQuery插件中文使用文档
2012/10/18 Javascript
点击button获取text内容并改变样式的js实现
2014/09/09 Javascript
JavaScript+html5 canvas实现本地截图教程
2020/04/16 Javascript
bootstrap使用validate实现简单校验功能
2016/12/02 Javascript
基于$.ajax()方法从服务器获取json数据的几种方式总结
2018/01/31 Javascript
JavaScript 日期时间选择器一些小结
2018/04/02 Javascript
微信小程序获取用户信息及手机号(后端TP5.0)
2019/09/12 Javascript
JS中比较两个Object数组是否相等方法实例
2019/11/11 Javascript
[01:46]新英雄登场
2019/09/10 DOTA
Python实现简单文本字符串处理的方法
2018/01/22 Python
Python3实现的字典遍历操作详解
2018/04/18 Python
解决python "No module named pip" 的问题
2018/10/13 Python
Python opencv实现人眼/人脸识别以及实时打码处理
2019/04/29 Python
Python实现数值积分方式
2019/11/20 Python
Django 自定义404 500等错误页面的实现
2020/03/08 Python
通过实例解析python and和or使用方法
2020/11/14 Python
Python Socket多线程并发原理及实现
2020/12/11 Python
Gap工厂店:Gap Factory
2017/11/02 全球购物
美国购物网站:Clickhere2shop
2021/01/28 全球购物
上海方立数码笔试题
2013/10/18 面试题
几个判断型的面试题
2012/07/03 面试题
优秀士兵个人事迹材料
2014/01/19 职场文书
《最大的“书”》教学反思
2014/02/14 职场文书
股指期货心得体会
2014/09/10 职场文书
庆祝教师节标语
2014/10/09 职场文书
2015年街道除四害工作总结
2015/05/15 职场文书
python实战之一步一步教你绘制小猪佩奇
2021/04/22 Python
python playwright 自动等待和断言详解
2021/11/27 Python
浅谈Redis 中的过期删除策略和内存淘汰机制
2022/04/03 Redis