国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目次
2. 取得周辺エリア情報(bào)
三、程序?qū)崿F(xiàn)
ホームページ WeChat アプレット WeChatの開発 WeChat パブリック プラットフォーム メッセージ インターフェイスの開発例、近くの企業(yè)の地理的位置クエリ

WeChat パブリック プラットフォーム メッセージ インターフェイスの開発例、近くの企業(yè)の地理的位置クエリ

Mar 31, 2017 pm 02:50 PM
マイクロチャネルパブリックプラットフォーム

1. ユーザーのアドレスと位置メッセージを取得します

ユーザーが位置を送信するときのメッセージと形式は次のとおりです

WeChat パブリック プラットフォーム メッセージ インターフェイスの開発例、近くの企業(yè)の地理的位置クエリ

バックエンド形式:

<xml>
<ToUserName><![CDATA[gh_680bdefc8c5d]]></ToUserName>
<FromUserName><![CDATA[oIDrpjqASyTPnxRmpS9O_ruZGsfk]]></FLACFromUserName>
<CreateTime>1359036619</CreateTime>
<MsgType><![CDATA[location]]></MsgType>
<Location_X>22.539968</Location_X>
<Location_Y>113.954980</Location_Y>
<Scale>16</Scale>
<Label><![CDATA[中國廣東省深圳市南山區(qū)華僑城深南大道9789號(hào) 郵政編碼: 518057]]></Label>
<MsgId>5837017832671832047</MsgId>
</xml>

XML 形式の説明


ToUserName 消息接收方微信號(hào),一般為公眾平臺(tái)賬號(hào)微信號(hào)
 FromUserName 消息發(fā)送方微信號(hào)
 CreateTime 消息創(chuàng)建時(shí)間
 MsgType 消息類型,地理位置為location
 Location_X 地理位置緯度
 Location_Y 地理位置經(jīng)度
 Scale 地圖縮放大小
 Label 地理位置信息
 MsgId 消息ID號(hào)

2. 取得周辺エリア情報(bào)

Baidu Map Place API は、特定のエリアをクエリするために特定の種類の POI データを返すために使用されるシンプルな HTTP インターフェイスであり、単一の POI に対して詳細(xì)なクエリ サービスを提供します。ユーザーは C#、C++、Java などを使用できます。 HTTP リクエストを送信し、json、xml データを受信するための他の開発言語。

Place API は、地域検索 POI サービス、POI 詳細(xì)サービス、グループ購入情報(bào)検索サービス、および加盟店グループ購入詳細(xì)クエリを提供します。地域検索POIサービスでは、都市內(nèi)検索、長方形検索、円形エリア検索の3つの地域検索方法を提供しています。

円形領(lǐng)域検索を使用して、近くの検索機(jī)能を?qū)g裝します。

場所エリア検索POIサービスインターフェースは次のとおりです:

http://api.map.baidu.com/place/v2/search

2000 周辺探索半徑、単位はメートルq(クエリ)はなし中関村、ATM 、Baidu Building 検索キーワード、周辺機(jī)器 複數(shù)のキーワードの結(jié)合検索をサポートしており、最大 10 個(gè)のキーワード検索がサポートされています。例: 「銀行$ホテル」。 タグいいえなし日本のバーベキュー/鉄板焼き、チャオワイストリートアイテムにタグを付けて、qと組み合わせて検索出力いいえxmljsonまたはxml出力形式はjsonまたはxmlですscopeis11、2検索結(jié)果の詳細(xì)。値が 1 または空の場合は、基本情報(bào)が返され、値が 2 の場合は、取得した POI の詳細(xì)情報(bào)が返されます。 |並べ替え名:価格 |ソートルール:0 |価格セクション:100,200 sort_name: 並べ替えフィールド

パラメータ

必要ですか

デフォルト値

フォーマット例

意味

location

なし

38.76623,116.43213
lat<緯度>,lng<経度>

|グルーポン:0

|discount:0

フィルター條件を取得します。スコープ値が 2 の場合、ソート用のフィルターを設(shè)定できます。

Industry_type: 業(yè)界タイプ
sort_rule: 並べ替えルール、値は次のとおりです: 0: 高い方から低い方へ、1: 低い方から高い方へ

; 価格セクション: 価格帯

groupon: 共同購入の有無。1 は共同購入があることを意味し、0 は共同購入がないことを意味します。 割引: 割引があるかどうか。1 は割引があることを意味し、0 は割引がないことを意味します。

page_size

10

10

范圍記錄數(shù)量,默認(rèn)為10條記錄,最大返回20條。多關(guān)鍵字檢索時(shí),返回的記錄數(shù)為關(guān)鍵字個(gè)數(shù)*page_size。

page_num

0

0、1、2

分頁頁碼,默認(rèn)為0,0代表第一頁,1代表第二頁,以此類推。

ak

E4805d16520de693a3fe707cdc962045

用戶的訪問密鑰,必填項(xiàng)。v2之前該屬性為key。

sn

 

用戶的權(quán)限簽名。

timestamp

 

設(shè)置sn后該值必填。

調(diào)用舉例如下:


http://api.map.baidu.com/place/v2/search?ak=MgBALVVeCd8THVBi6gPdvsvG&output=json&query=%E9%93%B6%E8%A1%8C&page_size=5&page_num=0&scope=2&location=39.915,116.404&radius=2000&filter=sort_name:distance

三、程序?qū)崿F(xiàn)

百度地圖類定義如下

class baiduMapClient
{    
    private $api_server_url;
    private $auth_params;

    public function __construct()
    {
        $this->api_server_url = "http://api.map.baidu.com/";
        $this->auth_params = array();
           $this->auth_params[&#39;key&#39;] = "401f9a693dd267dd9a4661ec0895fb20";
        $this->auth_params[&#39;output&#39;] = "json";
    }

    public function Geocoding_coordinate_address($location) 
    {   
        return $this->call("geocoder", array("location" => $location));
    }
    
    //http://api.map.baidu.com/place/search?&query=眼鏡&location=39.915,116.404&radius=3000&output=json&key=37492c0ee6f924cb5e934fa08c6b1676
    public function Place_search($query, $location, $radius) 
    {
        return $this->call("place/search", array("query" => $query, "location" => $location, "radius" => $radius));
    }
    
    protected function call($method, $params = array())
    {
        $headers = array(
            "User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:14.0) Gecko/20100101 Firefox/14.0.1",
            "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
            "Accept-Language: en-us,en;q=0.5",
            //"Accept-Encoding: gzip, deflate",
            "Referer: http://developer.baidu.com/"
        );
        $params = array_merge($this->auth_params, $params);
        $url = $this->api_server_url . "$method?".http_build_query($params);
        if (DEBUG_MODE){echo "REQUEST: $url" . "\n";}
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        //curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
         $data = curl_exec($ch);
        curl_close($ch);    
        $result = null;
        if (!empty($data)){
            if (DEBUG_MODE){
                echo "RETURN: " . $data . "\n";
            }
            $result = json_decode($data);
        }
        else{
            echo "cURL Error:". curl_error($ch);
        }
        return $result;
    }
}

獲取附近的調(diào)用代碼如下:

function catchEntitiesFromLocation($entity, $x, $y, $radius)
{   
    $mapObj = new baiduMapClient();
    $search = $mapObj->Place_search($entity, $x.",".$y, $radius);
    $results = $search->results;
    for ($i = 0; $i < count($results); $i++) {
        $distance = getDistance($x, $y, $results[$i]->location->lat, $results[$i]->location->lng);
        $shopSortArrays[$distance] = array(
            "Title"=>"【".$results[$i]->name."】<".$distance."M>".$results[$i]->address.(isset($results[$i]->telephone)?" ".$results[$i]->telephone:""),
            "Description"=>"", 
            "PicUrl"=>"", 
            "Url"=>"");
    }
    ksort($shopSortArrays);//排序
    $shopArray = array(); 
    foreach ($shopSortArrays as $key => $value) {  
        $shopArray[] =  array(
                        "title" => $value["Title"],
                        "description" => $value["Description"],
                        "pic" => $value["PicUrl"],
                        "url" => $value["Url"],
                    );
        if (count($shopArray) > 6){break;}
    }
    return $shopArray;
}

計(jì)算兩坐標(biāo)之間距離如下

function getDistance($lat_a, $lng_a, $lat_b, $lng_b) {
    //R是地球半徑(米)
    $R = 6366000;
    $pk = doubleval(180 / 3.14169);
    
    $a1 = doubleval($lat_a / $pk);
    $a2 = doubleval($lng_a / $pk);
    $b1 = doubleval($lat_b / $pk);
    $b2 = doubleval($lng_b / $pk);

    $t1 = doubleval(cos($a1) * cos($a2) * cos($b1) * cos($b2));
    $t2 = doubleval(cos($a1) * sin($a2) * cos($b1) * sin($b2));
    $t3 = doubleval(sin($a1) * sin($b1));
    $tt = doubleval(acos($t1 + $t2 + $t3));

    return round($R * $tt);
}

對于用戶的坐標(biāo)記錄,我們使用數(shù)據(jù)庫的方式來存儲(chǔ),

如果用戶發(fā)送查詢命令,則直接查詢,

function searchUserLocation($userWxid)
{
    Global $mysql_host;
    Global $mysql_host_s;
    Global $mysql_port;
    Global $mysql_user;
    Global $mysql_password;
    Global $mysql_database;
    
    //查詢使用從庫,支持SAE
    $mysql_table = "location";
    $mysql_state = "SELECT * FROM ".$mysql_table." WHERE userWxid = \"".$userWxid."\"";
    $con = mysql_connect($mysql_host.&#39;:&#39;.$mysql_port, $mysql_user, $mysql_password);
    if (!$con){
        die(&#39;Could not connect: &#39; . mysql_error());
    }
    mysql_query("SET NAMES &#39;UTF8&#39;");
    mysql_select_db($mysql_database, $con);
    $result = mysql_query($mysql_state);
    $location = array(); 
    while($row = mysql_fetch_array($result))
    {
        $location["x"] = $row["locationX"]; 
        $location["y"] = $row["locationY"]; 
    }
    mysql_close($con);
    if (isset($location["x"]) && $location["x"] != 0.0){
        return $location;
    }else{
        return "系統(tǒng)中沒有你的地理位置信息,請先發(fā)送位置給我!您不用擔(dān)心你的行蹤被泄漏,因?yàn)槟憧梢曰瑒?dòng)地圖,把別處的地址發(fā)送過來。";
    }
    
}

如果用戶發(fā)了位置,則進(jìn)行更新

function updateOrInsert($weixinid, $locationX, $locationY)
{    
    if (isset($_SERVER[&#39;HTTP_APPNAME&#39;])){
        $mysql_host = SAE_MYSQL_HOST_M;
        $mysql_host_s = SAE_MYSQL_HOST_S;  //sae的從庫
        $mysql_port = SAE_MYSQL_PORT;
        $mysql_user = SAE_MYSQL_USER;
        $mysql_password = SAE_MYSQL_PASS;
        $mysql_database = SAE_MYSQL_DB;
    }else{
        $mysql_host = "127.0.0.1";
        $mysql_host_s = "127.0.0.1";
        $mysql_port = "3306";
        $mysql_user = "root";
        $mysql_password = "root";
        $mysql_database = "sae";
    }
    
    $mysql_table = "location";
    //INSERT INTO location VALUES("23s2s", 1122.2, 366.2) ON DUPLICATE KEY UPDATE locationX = 1122.2, locationY = 366.2;
    
    $mysql_state = "INSERT INTO ".$mysql_table." VALUES(\"".$weixinid."\", ".$locationX.", ".$locationY.") ON DUPLICATE KEY UPDATE locationX = ".$locationX.", locationY = ".$locationY.";";
    var_dump($mysql_state);
    //
    
    $con = mysql_connect($mysql_host.&#39;:&#39;.$mysql_port, $mysql_user, $mysql_password);
    if (!$con){
        die(&#39;Could not connect: &#39; . mysql_error());
    }
    mysql_query("SET NAMES &#39;UTF8&#39;");
    mysql_select_db($mysql_database, $con);
    $result = mysql_query($mysql_state);
    if ($result == true){
        //return "你提交的位置為緯度:".$locationX.",經(jīng)度:".$locationY."。\n現(xiàn)在可以發(fā)送“附近”加關(guān)鍵字的命令查詢附近的目標(biāo),如“附近酒店”,“附近醫(yī)院”。";
        return "已經(jīng)成功獲取你的位置。您不用擔(dān)心你的行蹤被泄漏,因?yàn)槟憧梢园亚Ю镏獾牡刂诽峤贿^來。\n現(xiàn)在可以發(fā)送“附近”加關(guān)鍵字的命令查詢附近的目標(biāo),如“附近酒店”,“附近醫(yī)院”。";
    }else{
        return "提交失敗,請重試。如果一直出現(xiàn)這樣的錯(cuò)誤,請給我們留言。";
    }
}

對于用戶發(fā)送的內(nèi)容,先提取坐標(biāo),然后進(jìn)行組合查詢

WeChat パブリック プラットフォーム メッセージ インターフェイスの開発例、近くの企業(yè)の地理的位置クエリ

實(shí)現(xiàn)效果如下:

?WeChat パブリック プラットフォーム メッセージ インターフェイスの開発例、近くの企業(yè)の地理的位置クエリWeChat パブリック プラットフォーム メッセージ インターフェイスの開発例、近くの企業(yè)の地理的位置クエリWeChat パブリック プラットフォーム メッセージ インターフェイスの開発例、近くの企業(yè)の地理的位置クエリ

?

以上がWeChat パブリック プラットフォーム メッセージ インターフェイスの開発例、近くの企業(yè)の地理的位置クエリの詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國語 Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中國語版

SublimeText3 中國語版

中國語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強(qiáng)力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)