运用高德定位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()
}
}
};