移动端城市定位,城市区域代码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/
随机推荐
- matplotlib(终章)
今日内容概要 matplotlib实际案例演示 各种图形的总结 数据清洗(简单) 数据清洗的案例 今日内容详细 matplotlib实际案例演示 # 2.绘制每年电影上映数量曲线图 首先载入模块 im ...
- C#10新特性-lambda 表达式和方法组的改进
C# 10 中对Lambda的语法和类型进行了多项改进: 1. Lambda自然类型 Lambda 表达式现在有时具有"自然"类型. 这意味着编译器通常可以推断出 lambda 表 ...
- Linux——vi命令详解
转载 Linux--vi命令详解 原文链接:https://blog.csdn.net/cyl101816/article/details/82026678 vi编辑器是所有Unix及Linux系 ...
- 13 数组 Java内存分析 三种初始化
Java内存分析 三种初始化 静态初始化 //静态初始化 创建+赋值 int[] a = {1,2,3}; Man[] mans = {new Man(1,1),new Man(2,2)}; 动态初始 ...
- CF1428B题解
打比赛的时候sb了,用了一个似乎原本可以不用的东西来找环... 首先,根据题意,我们可以连成一张图,而蛇能不能回到自己的家, 只需要在一个环上就行了. 问题是怎么找环,我用了 Tarjan... 具体 ...
- 6月5日 python学习总结 jQuery (二)
1. 操作样式 对CSS类的操作: addClass();// 添加指定的CSS类名. removeClass();// 移除指定的CSS类名. hasClass();// 判断样式存不存在 ...
- [SPDK/NVMe存储技术分析]009 - Introduction to RDMA Send | RDMA Send操作概论
来源: https://zcopy.wordpress.com/ 说明: 本文不是对原文的逐字逐句翻译,而是摘取核心部分以介绍RDMA Send操作(后面凡是提到RDMA send, 都对应于IBA里 ...
- synchronized 与 lock锁的异同
相同点: 二者都可以解决线程安全问题: 不同点: 1..Synchronized 是Java内置的关键字:Lock是一个Java类: 2.Synchronized 无法判断锁的状态:Lock可以判断是 ...
- Vue指令02——v-on指令和v-show的使用
Vue指令02--v-on指令和v-show的使用 v-on指令 格式1:v-on:事件="方法" 格式2:@事件="方法" 格式3:@事件="方法( ...
- Mybatis框架基础入门(二)--架构简介
mybatis配置 SqlMapConfig.xml,此文件作为mybatis的全局配置文件,配置了mybatis的运行环境等信息. mapper.xml文件即sql映射文件,文件中配置了操作数据库的 ...