使用高德定位API :

  1. AMap.Map('iCenter')
  2. AMap.CitySearch()

先在高德开放平台注册申请定位权限的key。 网站;高德开放平台

在需要定位的页面引入有定位key的script

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width">
<title>基本引入展示</title>
<script src="https://webapi.amap.com/maps?v=1.4.8&key=您申请的key值"></script> </head>
<body>
<div id="container"></div> </body>
</html>

使用高德定位API

需求:苹果设备使用IP定位,其他使用gps定位

function getlocation() {

            var u = navigator.userAgent;

            var ua = navigator.userAgent.toLowerCase();

            var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //android终端
var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端 //GPS定位
function locationForGPS() {
/*********跟踪标记**********/ console.log('GPS定位开始+++');
var map, geolocation;
//加载地图,调用浏览器定位服务
map = new AMap.Map('iCenter');
map.plugin('AMap.Geolocation', function() {
geolocation = new AMap.Geolocation({
enableHighAccuracy: false,//是否使用高精度定位,默认:true
timeout: 10000, //超过10秒后停止定位,默认:无穷大
});
map.addControl(geolocation);
geolocation.getCurrentPosition(); //getCityInfo是高德GPS定位里面的一个方法,先返回ip定位数据,由于IP定位有可能不准确,所以后面用GPS数据修正
//
geolocation.getCityInfo(function(status,result){
/*********跟踪标记**********/ console.log('与GPS同步IP定位开始,进行数据写入+++');
if (status === 'complete' && result.info === 'SUCCESS') {
/*********跟踪标记**********/ console.log('同步IP定位成功,进行数据写入+++');
if(isNull(sessionStorage.getItem('autouserchooselocationct'))){
/*********跟踪标记**********/ console.log('未检测检查有上一次定位数据,进行数据写入+++');
let cityAdcode=result.adcode;
let cityName=result.city; sessionStorage.setItem('autouserchooselocationct', cityName);
sessionStorage.setItem('autouserchooselocationcode', cityAdcode); /*********跟踪标记**********/ console.log('同步IP定位结束,进行数据写入完成+++');
}
}
}); AMap.event.addListener(geolocation, 'complete', onComplete);//返回定位信息
AMap.event.addListener(geolocation, 'error', onError); //返回定位出错信息 }); //GPS定位成功
function onComplete(data) {
console.log(data)
/*********跟踪标记**********/ console.log('GPS定位启动+++');
//gsp定位精确到区,返回的adcode精确到了城市下属的区域,
//想要获取城市的abcode还需要使用高德的另一个API,城市区域查询 let cityName=data.addressComponent.city; let geocoder = new AMap.Geocoder({});
//地理编码,返回地理编码结果, geocoder.getLocation(cityName, function(status, result) {
if (status === 'complete' && result.info === 'OK') {
/*********跟踪标记**********/ console.log('GPS定位成功,处理定位数据+++'); /*********跟踪标记**********/ console.log('进行数据写入,覆盖同步IP的数据+++');
let cityAdcode=result.geocodes[0].adcode;
sessionStorage.setItem('autouserchooselocationct', cityName);
sessionStorage.setItem('autouserchooselocationcode', cityAdcode); /*********跟踪标记**********/ console.log('GPS定位结束,进行数据写入完成+++');
} }); } //GPS定位失败
function onError() {
/*********跟踪标记**********/ console.log('GPS定位失败开始启用ip定位+++');
locationForIp(true);
/*********跟踪标记**********/ console.log('gps-ip++...')
} } //IP定位
function locationForIp(tap) {
/*********跟踪标记**********/if(tap){ console.log('GPS定位失败开始启用ip定位+++');}
/*********跟踪标记**********/ console.log('ip定位开始+++');
var citysearch = new AMap.CitySearch();
//自动获取用户IP,返回当前城市
citysearch.getLocalCity(function (status, result) {
if (status === 'complete' && result.info === 'OK') {
if (result && result.city && result.bounds) {
let GetUserLocation = result.city,
GetUserLocationcode = result.adcode;
/*********跟踪标记**********/console.log('ip定位成功,开始检查是否有上一次定位数据+++');
if(isNull(sessionStorage.getItem('autouserchooselocationct'))){
/*********跟踪标记**********/console.log('ip定位成功,未检测检查有上一次定位数据,进行数据写入+++');
sessionStorage.setItem('autouserchooselocationct', GetUserLocation);
sessionStorage.setItem('autouserchooselocationcode', GetUserLocationcode); /*********跟踪标记**********/console.log('ip定位成功,进行数据写入结束+++');
}
}
} else { /*********跟踪标记**********/console.log('ip定位失败,进行数据写入结束+++');
} }) } if(isiOS){
/*********跟踪标记**********/console.log('ios设备启用IP定位');
locationForIp(false); }else {
/*********跟踪标记**********/console.log('非ios设备启用GPS定位');
locationForGPS()
} } };

移动端城市定位,城市区域代码adcode的更多相关文章

  1. html5或者移动端暴力定位城市-高德地图,可以取到当前的城市code,亲测好用

    复制 粘贴到html中打开!!!!! <!doctype html> <html> <head> <meta charset="utf-8" ...

  2. [RN] 全国城市列表选择 (包含定位城市、热门城市、全国城市)

    全国城市列表选择 (包含定位城市.热门城市.全国城市) 用ScrollView 实现,解决 SectionList 实现的卡顿问题 实现效果如图: 代码实现如图: 主逻辑文件 cityList.js ...

  3. iOS_城市定位

    技术点-利用CoreLoaction框架,实现城市定位功能. 原理: 利用苹果官方提供的CoreLocation框架实现城市定位的功能: 该框架主要包括两个比较有用的类:定位类CLLocationMa ...

  4. [android] 百度地图开发 (两).所在地的城市定位和城市POI搜索

    一个. 百度地图城市位置和POI搜索知识       上一篇文章"百度地图开发(一)"中讲述了怎样申请百度APIKey及解决显示空白网格的问题.该篇文章主要讲述怎样定位城市位置.定 ...

  5. mpvue小程序开发之 城市定位

    背景: 在进行小程序开发时,有一个定位城市的需求,下面就来讲讲怎么实现这个功能的吧 解决方案: 小程序的wx.getLocation()获得是经纬度并不包含地名,所以要通过经纬度用相应的地图转换出地名 ...

  6. 通过ip得到所在城市,以及城市所在经纬度坐标(监控系统中用的该代码,小航哥)

    监控系统中就是利用的该段代码,实现通过ip得到所在城市,以及城市所在经纬度坐标,最后得以利用echarts实现模拟迁移的效果 api官方介绍: http://lbsyun.baidu.com/inde ...

  7. 转: javascript实现全国城市三级联动菜单代码

    <html> <head> <title>js全国城市三级联动菜单代码_B5教程网</title> <meta http-equiv=" ...

  8. 获取客户端IP地址定位城市信息

    获取客户端IP地址定位城市信息 1.首先获取客户端的IP地址 function getIPaddress(){ $IPaddress=''; if (isset($_SERVER)){ if (iss ...

  9. 根据IP定位城市

    根据IP定位城市:http://www.sucaihuo.com/js/35.html 示例:http://www.sucaihuo.com/jquery/0/35/demo/

随机推荐

  1. Django后台管理的使用

    Django后台管理的使用 参考文章:https://www.runoob.com/django/django-admin-manage-tool.html 1.编写好models 直接在admin. ...

  2. jq获取不包含某些属性的元素

    最近写项目,有个功能实现checkbox全选,但是被禁用的checkbox不能选中 点击全选后发现禁用checkbox的也被选中了,不符合需求. 但是想了半天,属性选择器都是判断某个属性值的,没有判断 ...

  3. boostrap的select2自动换行的问题解决

    最近在使用boostrap的select2控件实现多选效果时发现一个问题正常效果:但是当选择了两个长一些的option时,发现select2莫名其妙的换了一行空白行:经过F12调试发现是因为selec ...

  4. JavaDoc开发文档

    JavaDoc是一种将注释生成HTML的技术,生成的HTML文档类似于Java的API,易读且清晰明了. javadoc是Sun公司提供的一个技术,它从程序源代码中抽取类.方法.成员等注释形成一个和源 ...

  5. vue轻量进度条

    **### vue------ mode 好玩东西+1: 轻量级进度条: 1.引入 import NProgress from 'nprogress'; // progress bar import ...

  6. k-means聚类:擒贼先擒王,找到中心点,它附近的都是一类

    属于无监督学习,聚类算法事先并不需要知道数据的类别标签,只是根据数据特征去学习,找到相似数据的特征,然后把已知的数据集划分成几个不同的类别 算法原理: 假设数据总共有m条,计划分成3个类别 先随机在这 ...

  7. LCD1602----LiquidCrystal库的使用1

    一:硬件介绍: 1.引脚定义: 2.屏幕介绍: 1602液晶也叫1602字符型液晶,它是一种专门用来显示字母.数字.符号的点阵型液晶模块.它是由若干个5x7或者5x10的点阵字符位组成,每个点阵字符位 ...

  8. Django基础七之CBV装饰器和中间件

    Django基础七之CBV装饰器和中间件 目录 Django基础七之CBV装饰器和中间件 1. CBV加装饰器 2. Django中间件 2.1 Django中间件介绍 2.2 自定义中间件 2.2. ...

  9. 基于ECS搭建云上博客(云小宝码上送祝福,免费抽iphone13任务详解)

    码上送祝福,带云小宝回家 做任务免费抽iphone13,还可得阿里云新春限量手办 日期:2021.12.27-2022.1.16 云小宝地址:https://developer.aliyun.com/ ...

  10. 嵌套OOPS导致系统卡死 每个CPU都上报softlockup的问题

    问题现象:在ARM服务器上,构造oops异常,本应该产生panic,进入dump流程,并且系统重启,但是系统并未重启,而是出现了卡死,在串口会隔一段时间就循环打印调用栈信息.如下所示 linux-fA ...