移动端城市定位,城市区域代码adcode
使用高德定位API :
- AMap.Map('iCenter')
- 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的更多相关文章
- html5或者移动端暴力定位城市-高德地图,可以取到当前的城市code,亲测好用
复制 粘贴到html中打开!!!!! <!doctype html> <html> <head> <meta charset="utf-8" ...
- [RN] 全国城市列表选择 (包含定位城市、热门城市、全国城市)
全国城市列表选择 (包含定位城市.热门城市.全国城市) 用ScrollView 实现,解决 SectionList 实现的卡顿问题 实现效果如图: 代码实现如图: 主逻辑文件 cityList.js ...
- iOS_城市定位
技术点-利用CoreLoaction框架,实现城市定位功能. 原理: 利用苹果官方提供的CoreLocation框架实现城市定位的功能: 该框架主要包括两个比较有用的类:定位类CLLocationMa ...
- [android] 百度地图开发 (两).所在地的城市定位和城市POI搜索
一个. 百度地图城市位置和POI搜索知识 上一篇文章"百度地图开发(一)"中讲述了怎样申请百度APIKey及解决显示空白网格的问题.该篇文章主要讲述怎样定位城市位置.定 ...
- mpvue小程序开发之 城市定位
背景: 在进行小程序开发时,有一个定位城市的需求,下面就来讲讲怎么实现这个功能的吧 解决方案: 小程序的wx.getLocation()获得是经纬度并不包含地名,所以要通过经纬度用相应的地图转换出地名 ...
- 通过ip得到所在城市,以及城市所在经纬度坐标(监控系统中用的该代码,小航哥)
监控系统中就是利用的该段代码,实现通过ip得到所在城市,以及城市所在经纬度坐标,最后得以利用echarts实现模拟迁移的效果 api官方介绍: http://lbsyun.baidu.com/inde ...
- 转: javascript实现全国城市三级联动菜单代码
<html> <head> <title>js全国城市三级联动菜单代码_B5教程网</title> <meta http-equiv=" ...
- 获取客户端IP地址定位城市信息
获取客户端IP地址定位城市信息 1.首先获取客户端的IP地址 function getIPaddress(){ $IPaddress=''; if (isset($_SERVER)){ if (iss ...
- 根据IP定位城市
根据IP定位城市:http://www.sucaihuo.com/js/35.html 示例:http://www.sucaihuo.com/jquery/0/35/demo/
随机推荐
- burpsuite常见问题
中文乱码问题:https://www.cnblogs.com/bk76120/p/12400092.html 无法抓取本地或局域网其他主机的包 去掉"对于本地地址不使用代理服务器" ...
- 让Node.js支持ES6的语法
使用命令,全局安装es-checker: cnpm install -g es-checker 安装好之后,执行以下命令来查看Node.js对ES6的支持情况. es-checker 可以从输出中查看 ...
- 【故障公告】龙卷风来袭:突增的并发请求,撑不住的CPU
(上图是数据库连接数监控图) 非常抱歉,今天下午 16:50-17:40 期间,一场龙卷风突袭园子,突增的并发请求狂卷博客站点的 pod,由于风力巨大(70%左右的增量),pod 的 cpu 不堪重负 ...
- laravel7 下拉搜索
html:页面 首先给下拉框一个页面改变事件,将下拉框的值发送至后台,进行查询 <select name="interest" id="serarch" ...
- LGP5312题解
压 位 T r i e 入 门 练 习 题(确信) 题意很清楚( 让我们先来想一想,如果没有排序操作的话,这道题应该怎么做. 我们维护一个 \(x\) 表示从开始到现在一共异或上了 \(x\),在序列 ...
- Wireshark OpenFlow解析器拒绝服务漏洞
受影响系统:Wireshark Wireshark 2.2.0 - 2.2.1Wireshark Wireshark 2.0.0 - 2.0.7描述:CVE(CAN) ID: CVE-2016-937 ...
- &取地址运算符
&可以取得一个变量在内存当中的地址 Register int a; //这种变量不在内存里面,而在CPU里面,是没有地址的, 所以寄存器变量(register)不能用&来取得变量 在计 ...
- PMP之挣值管理(PV、EV、AC、SV、CV、SPI、CPI)的记忆方法
挣值管理法中的PV.EV.AC.SV.CV.SPI.CPI这些英文简写相信把大家都搞得晕头转向的.在挣值管理法中,需要记忆理解的有三个参数:PV.AC.EV. PV:计划值,在即定时间点前计划完成活动 ...
- vue学习过程总结(03) - 菜鸟教程归纳
1.模板语法 1.1.文本插值,数据绑定.{{}},如: <p>{{ message }}</p> 1.2.输出HTML代码.v-html,如: <div v-html= ...
- Flink不止于计算,存算一体才是未来
"伴随着实时化浪潮的发展和深化,Flink 已逐步演进为实时流处理的领军技术和事实标准.Flink 一方面持续优化其流计算核心能力,不断提高整个行业的流计算处理标准,另一方面沿着流批一体 ...