H5与微信获取用户当前位置

微信和h5原生方法都提供了获取用户地理位置的方法,需要使用第三方的逆地理编码的方式获得用户的实际位置信息。

1、H5方法

H5的新特性中加入了获取地理位置的方法window.navigator.geolocation,使用该方法我们可以方便的获取用户的地理位置,在通过第三方的逆地理编码的方法可以获得用户所在的实际位置。我用的是百度地图的web API,需要使用者在百度地图的开发者平台上申请一个KEY,

var startGps=function (){
   if(window.navigator.geolocation){
      window.navigator.geolocation.getCurrentPosition(getSuccess,getError);
   }else{
      $rootScope.SelectPayCityName = "北京市";
   }
};
var getSuccess=function(position){
var latlon = position.coords.latitude+','+position.coords.longitude;
//baidu
var url = "https://api.map.baidu.com/geocoder/v2/?ak=&callback=renderReverse&location="+$scope.latlon+"&output=json&pois=0";
$ . ajax ( { type : "GET" , dataType : "jsonp" , url : $scope . url , success : function ( data ) { if ( data . status == 0 ) {
		var SelectPayCityName=data.result.addressComponent.city;
} else {
		var SelectPayCityName = "北京市";
} }, error : function ( data ) {
		var SelectPayCityName = "北京市"
} } ) ;};
var getError=function(){
	var SelectPayCityName = "北京市";
}; 2、微信公众平台

微信直接提供了获取用户的地理位置的方法,需要我们在wx,cofig()中获取调用的权限

wx.config({
   debug : false,
   appId : apiData.appid,
   timestamp : apiData.timestamp,
   nonceStr : apiData.noncestr,
   signature : apiData.signNature,
   jsApiList : ['scanQRCode','closeWindow','chooseWXPay','getLocation']
});
获得权限后我们就可以直接使用wx.getLocation()方法获得用户的地理位置了。

var getCityName=function(){
   wx.getLocation({
      "type": 'wgs84',
      "success": function (res) {    
		var latitude = res.latitude; // 纬度,
var longitude = res . longitude ; // 精度 // 百度地图逆地理编码 var url = "https://api.map.baidu.com/geocoder/v2/?callback=renderReverse&location=" + latitude + ',' + longitude + "&output=json&ak=4Dfl9xwPGejMePRRzASXZAoIznQY7fe2" ; $ . ajax ( { type : "GET" , dataType : "jsonp" , url : url , success : function ( data ) { if ( data . status == 0 ) { var SelectPayCityName = data . result .addressComponent.city; } else { var SelectPayCityName = " 北京市 " ; } }, error : function ( data ) { var SelectPayCityName = " 北京市 " ; } } ) }, "cancel" : function ( res ) { var SelectPayCityName = " 北京市 " ; } } ) ;}

你可能感兴趣的:(web,微信开发)