Skip to content

Instantly share code, notes, and snippets.

@Visionchen
Last active December 4, 2018 09:57
Show Gist options
  • Select an option

  • Save Visionchen/ce2295949526e6b5fabdcb61a04e5a5d to your computer and use it in GitHub Desktop.

Select an option

Save Visionchen/ce2295949526e6b5fabdcb61a04e5a5d to your computer and use it in GitHub Desktop.
高德地图
### 1.高德地图根据IP获取当前位置信息
```language
http://restapi.amap.com/v3/ip?key=c8d499635271ab4f9d449d35911e2cf1
{
"status":"1",
"info":"OK",
"infocode":"10000",
"province":"广东省",
"city":"深圳市",
"adcode":"440300",
"rectangle":"113.9629412,22.4627142;114.2106056,22.61394155"
}
```
### 2.微信定位获取经纬度高德返回详细地址,不准
```language
$$.ajax({
type: "get",
url: "/weixin/auth/js",
dataType: "jsonp",
data: {
//当前网页url
url: location.href
},
success: function (res) {
console.log(res)
wx.config(JSON.parse(res));
}
});
console.log('定位.........');
wx.ready(function () {
//获取当前地理位置
var p_tips= jmApp.modal({text: '正在定位...'});
wx.getLocation({
success: function (res) {
//成功获取经纬度
console.log(res)
var lat = res.longitude;
var lng = res.latitude;
AMap.service('AMap.Geocoder',function(){//回调函数
//实例化Geocoder
geocoder = new AMap.Geocoder({
city: ""//城市,默认:“全国”
});
cityCode=[lat,lng];//
/*console.log(cityCode)*/
geocoder.getAddress(cityCode, function(status, result) {
if (status === 'complete' && result.info === 'OK') {
jmApp.closeModal(p_tips);
//获得了有效的地址信息:
var tips= jmApp.modal({text: '获取位置成功'});
setTimeout(function(){jmApp.closeModal(tips);},1200);
console.log(result);
var html="";
html+=('<div class="address-card" id="address-card" data-href='+result.regeocode.formattedAddress+""+' data-location='+lat+","+lng+' data-addressName='+result.regeocode.addressComponent.building+' ><p>'+result.regeocode.addressComponent.building+'</p><p>'+result.regeocode.formattedAddress+'</p></div>')
$$(".main-body").html(html);
}else{
jmApp.closeModal(p_tips);
//获取地址失败
var tips= jmApp.modal({text: '获取失败'});
setTimeout(function(){jmApp.closeModal(tips);},1200);
return false;
}
});
})
},
cancel: function (res) {
console.log(res);
},
error: function (res) {
console.log(res);
var tips= jmApp.modal({text: '请打开定位权限'});
setTimeout(function(){jmApp.closeModal(tips);},1200);
return false;
}
});
});
```
### 高德浏览器定位,许多不兼容,需升级https
```language
<body>
<div id="map"></div>
<span id="addr">当前地址为:</span>
<script type="text/javascript">
    var mapObj = new AMap.Map('map');
    mapObj.plugin('AMap.Geolocation', function () {
        geolocation = new AMap.Geolocation({
            enableHighAccuracy: true, // 是否使用高精度定位,默认:true
            timeout: 10000,           // 超过10秒后停止定位,默认:无穷大
            maximumAge: 0,            // 定位结果缓存0毫秒,默认:0
            convert: true,            // 自动偏移坐标,偏移后的坐标为高德坐标,默认:true
            showButton: true,         // 显示定位按钮,默认:true
            buttonPosition: 'LB',     // 定位按钮停靠位置,默认:'LB',左下角
            buttonOffset: new AMap.Pixel(10, 20), // 定位按钮与设置的停靠位置的偏移量,默认:Pixel(10, 20)
            showMarker: true,         // 定位成功后在定位到的位置显示点标记,默认:true
            showCircle: true,         // 定位成功后用圆圈表示定位精度范围,默认:true
            panToLocation: true,      // 定位成功后将定位到的位置作为地图中心点,默认:true
            zoomToAccuracy:true       // 定位成功后调整地图视野范围使定位位置及精度范围视野内可见,默认:false
        });
        mapObj.addControl(geolocation);       //授权弹窗
        geolocation.getCurrentPosition();
        AMap.event.addListener(geolocation, 'complete', onComplete); // 返回定位信息
        AMap.event.addListener(geolocation, 'error', onError);       // 返回定位出错信息
    });
    function onComplete(obj){
        var res = '经纬度:' + obj.position + 
                '\n精度范围:' + obj.accuracy + 
                '米\n定位结果的来源:' + obj.location_type + 
                '\n状态信息:' + obj.info + 
                '\n地址:' + obj.formattedAddress + 
                '\n地址信息:' + JSON.stringify(obj.addressComponent, null, 4);
        alert(res);
    $("#addr").text(obj.position);
    }
    function onError(obj) {
        alert(obj.info + ',,,,' + obj.message);
        console.log(obj);
    }
</script>
</body>
---------------------
window.navigator.geolocation.getCurrentPosition(function (position) {
console.log(position.coords.latitude)
console.log(position.coords.longitude)
})
```
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment