調用微信定位功能 lat _ lng php方法

 

 

{:wx_jssdk_config("false")}  //最主要的這一句 沒有這一句在微信瀏覽器裏是沒法調用的定位功能的。下面有這個方法說明
<script>
    wx.ready(function(){
        wx.getLocation({
            type: 'wgs84', // 默認爲wgs84的gps座標,若是要返回直接給openLocation用的火星座標,可傳入'gcj02'
            success: function (res) {
                var latitude = res.latitude; // 緯度,浮點數,範圍爲90 ~ -90
                var longitude = res.longitude; // 經度,浮點數,範圍爲180 ~ -180。
                 var data = {
                        "lat":latitude,
                        "lng": longitude,
                    };
//                    console.log(data);
                    $.ajax({
                        url:'{:U("Index/lat_lng_add")}',
                        type: "POST",
                        data: data,
                        success: function (data) {}
                    });
            }
        })
    });
</script>

 

如下代碼是須要放在function.php中的php

/**
 * 直接生成微信jssdk_config
 * @echo string $jssdk Jssdk_config
 * @author 5heAtMin9 <sheatming@foxmail.com>
 */

function wx_jssdk_config($debug='true'){
    $getSignPackage = wx_getSignPackage();
    $jssdk = '<script src="https://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>';
    $jssdk .= '<script>
    wx.config({
        debug: '.$debug.', 
        appId: "'.$getSignPackage['appId'].'",
        timestamp: "'.$getSignPackage['timestamp'].'",
        nonceStr: "'.$getSignPackage['nonceStr'].'",
        signature: "'.$getSignPackage['signature'].'",
        jsApiList: ["checkJsApi","onMenuShareTimeline","onMenuShareAppMessage","onMenuShareQQ", "onMenuShareWeibo","onMenuShareQZone","hideMenuItems","showMenuItems","hideAllNonBaseMenuItem","showAllNonBaseMenuItem","translateVoice","startRecord","stopRecord","onVoiceRecordEnd","playVoice","onVoicePlayEnd","pauseVoice","stopVoice","uploadVoice","downloadVoice","chooseImage","previewImage","uploadImage","downloadImage","getNetworkType","openLocation","getLocation","hideOptionMenu","showOptionMenu","closeWindow","scanQRCode","chooseWXPay","openProductSpecificView","addCard","chooseCard","openCard"],
    });
</script>';
    echo $jssdk;
}





/**
 * Jssdk所需信息
 * @return array $signPackage Jssdk所需信息
 * @author 5heAtMin9 <sheatming@foxmail.com>
 */

function wx_getSignPackage()
{
    $jsapiTicket = wx_getJsApiTicket();
    // 注意 URL 必定要動態獲取,不能 hardcode.
    $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
    $url = "$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
    $timestamp = time();
    $nonceStr = getRandom(32);
    // 這裏參數的順序要按照 key 值 ASCII 碼升序排序
    $string = "jsapi_ticket=$jsapiTicket&noncestr=$nonceStr&timestamp=$timestamp&url=$url";
    $signature = sha1($string);
    $signPackage = array(
        "appId"     => C('WX_APPID'),
        "nonceStr"  => $nonceStr,
        "timestamp" => $timestamp,
        "url"       => $url,
        "signature" => $signature,
        "rawString" => $string
    );
    return $signPackage;
}

function wx_getJsApiTicket() {
    $jturl = 'https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token='.wx_get_access_token() -> access_token.'&type=jsapi';
    $ticket = json_decode(os_get($jturl));
    return $ticket->ticket;
}
相關文章
相關標籤/搜索