Tout d'abord, ajoutez le fichier de configuration WeChat à la page et obtenez-le via js.
<script type="text/javascript"> wx.config({ debug: false, appId: '{$signPackage.appId}', timestamp: '{$signPackage.timestamp}', nonceStr: '{$signPackage.nonceStr}', signature: '{$signPackage.signature}', jsApiList: [ // 所有要调用的 API 都要加到这个列表中 'checkJsApi', 'openLocation', 'getLocation', 'scanQRCode' ] }); wx.ready(function () { $('#scan').click(function(){ wx.scanQRCode({ needResult: 0, }); }); wx.checkJsApi({ jsApiList: [ 'getLocation' ], success: function (res) { if (res.checkResult.getLocation == false) { alert('你的微信版本太低,不支持微信JS接口,请升级到最新的微信版本!'); return; } } }); wx.getLocation({ success: function (res) { var latitude = res.latitude; // 纬度,浮点数,范围为90 ~ -90 var longitude = res.longitude; // 经度,浮点数,范围为180 ~ -180。 var geoconv = 'http://api.map.baidu.com/geoconv/v1/?callback=coordinateTransformation&coords=' + longitude + ',' + latitude + '&from=1&to=5&ak=5BFNbSgnVF5g2O72NpvTDxFm'; var script = document.createElement('script'); script.src = geoconv; document.head.appendChild(script); }, cancel: function (res) { alert('用户拒绝授权获取地理位置'); } }); }); function coordinateTransformation(data) { var LATLNG = data.result[0].y + ',' + data.result[0].x; var url = 'http://api.map.baidu.com/geocoder/v2/?callback=getCurrentLocation&ak=5BFNbSgnVF5g2O72NpvTDxFm&location=' + LATLNG + '&output=json&pois=1'; var script = document.createElement('script'); script.src = url; document.head.appendChild(script); } function getCurrentLocation(data) { if(data.status === 0) { var address = data.result.formatted_address, x = data.result.location.lng, y = data.result.location.lat, city = data.result.addressComponent.city, street = data.result.addressComponent.street || data.result.formatted_address, reqData = 'street=' + address + '&name=' + street + '&lng=' + x + '&lat=' + y + '&city=' + city; var url = "{:U('Index/savePosition')}"; $.getJSON(url,{'name':street,'lng':x,'lat': y,'city':city},function(data) { if(data.returnCode) { } }); } } </script>
Deuxièmement, recevez les coordonnées géographiques transmises par ajax dans le contrôleur, puis enregistrez-les dans la session.
public function savePosition() { $city = II('get.city','','trim'); $addr = II('get.name','','trim'); $lng = II('get.lng','','trim'); $lat = II('get.lat','','trim'); $myLocation = array( 'city' =>$city, 'addr' =>$addr, 'lng' =>$lng, 'lat' =>$lat, ); $_SESSION['MyLocation'] = $myLocation; $data['returnCode'] = 1; $data['returnInfo'] = '获取位置成功!'; $this->ajaxReturn($data); return; }
Remarque : le framework thinkphp est utilisé. II est une méthode personnalisée pour obtenir la valeur transmise par get ou post, la même que la fonction I.
Recommandations associées :
[Cours] Document de développement du mini programme WeChat
Résumé de l'interface WeChat JS et détails d'utilisation_compétences javascript
LBS pour le développement de comptes publics WeChat
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!