이 글에서는 주로 사용자의 답글 키워드 위치를 기반으로 주변 정보를 반환하는 PHP WeChat 개발의 간단한 구현을 자세히 소개합니다. 관심 있는 친구는 이를 참조할 수 있습니다.
사용자가 WeChat 공개 계정을 팔로우한 후 사용자의 지리적 위치(Tencent Map)를 공개 계정에 회신하고 위치 정보의 위도와 경도를 추출하여 Baidu의 위도와 경도로 변환할 수 있습니다. 그런 다음 위도와 경도를 기반으로 Baidu Map의 API가 호출되어 반경 2KM 내의 "레스토랑" 및 "호텔"(사용자 정의 가능)과 같은 정보를 반환합니다. Baidu의 API를 호출할 때 apiKEY를 받아야 합니다. 그렇지 않은 경우 Baidu 개발자 센터에 가서 등록하고 신청하세요.
먼저 위도 및 경도 집합을 사용하여 인터페이스에서 반환된 데이터를 테스트합니다.
<?php /**根据一组经纬度查找附近2公里以内的关键字**/ header('Content-type:text/html;charset=utf-8'); //--------第一步:转换经纬度---- //参考链接:http://www.php.cn/ $Location_X = 23.134521; $Location_Y = 113.358803; $url = "http://api.map.baidu.com/geoconv/v1/?coords=$Location_X,$Location_Y&from=3&to=5&ak=这里填写你的apikey"; $res = file_get_contents($url); $res = json_decode($res, true); //用户发送腾讯的soso地图位置信息经过转换之后,得到百度地图的经纬度 $x = $res['result'][0]['x']; $y = $res['result'][0]['y']; //---------第二步:根据经纬度和关键词获得附近的信息---------- //参考链接:http://www.php.cn/ $url = "http://api.map.baidu.com/place/v2/search?ak=这里填写你的apikey&output=json&query=" . urlencode("饭店") . "&page_size=10&page_num=0&scope=2&location=$x,$y&radius=2000"; $res = file_get_contents($url); $res = json_decode($res, true); // echo "<pre class="brush:php;toolbar:false">"; // print_r($res); // echo ""; //提取所需的信息 foreach($res['results'] as $k=>$v){ $arr[$k]['name'] = $v['name']; $arr[$k]['address'] = $v['address']; $arr[$k]['img_url'] = 'http://misakaqnxt-public.stor.sinaapp.com/click.png'; $arr[$k]['detail_url'] = isset($v['detail_info']['detail_url'])?$v['detail_info']['detail_url']:''; } echo "
"; print_r($arr); echo "";
반환된 데이터
올바른 apikey를 입력했다면 위의 데이터가 반환되어야 합니다. 다음: WeChat 인터페이스 플랫폼 코드(공개 도메인 이름 공간에 배치된 PHP 스크립트)에서 메시지 유형을 결정하고 위도와 경도를 얻은 다음 Baidu Map API를 호출하고 XML을 연결하여 반환합니다. Baidu API에서 반환된 데이터에 "레스토랑"의 썸네일 이미지가 없기 때문에 제가 운영하는 웹사이트의 사진을 사용했습니다.
사용자가 인근 "식당"
또는 "호텔" 및 기타 정보에 대한 검색을 맞춤설정할 수 있도록 하기 위해 사용자는 먼저 "XX를 찾고 있습니다"라고 답한 다음 XX를 추출하여 세션에 넣고 기다릴 수 있습니다. 사용자가 지리적 위치로 응답할 수 있도록 위치에 있을 때 세션을 제거합니다. 하지만 세션을 설정한 후에는 꺼낼 수 없었습니다. 그래서 여기서는 Sina Cloud의 KVDB 서비스를 사용합니다. 물론 Memcache나 Redis와 같은 캐싱 방법을 사용할 수도 있습니다.
$which = mb_substr($keyword, 0, 2, 'UTF-8');
elseif($which == "寻找"){ $find = str_replace($which, "", $keyword); //调用新浪云的KVDB服务 $kv = new SaeKV(); $kv->init(); $kv->set('find', $find); $contentStr = "选择表情旁边的'+',发送位置,即可查找你要找的地方"; $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgtype, $contentStr); echo $resultStr; exit(); }
elseif($postObj->MsgType == 'location'){ /** * 如果是收到了地理位置消息,则返回附近的饭店 */ //--------第一步:转换经纬度------- //参考链接:http://www.php.cn/ $Location_X = $postObj->Location_X; $Location_Y = $postObj->Location_Y; $url = "http://api.map.baidu.com/geoconv/v1/?coords=$Location_X,$Location_Y&from=3&to=5&ak=这里填写你的apikey"; $res = file_get_contents($url); $res = json_decode($res, true); //用户发送腾讯的soso地图位置信息经过转换之后,得到百度地图的经纬度 $x = $res['result'][0]['x']; $y = $res['result'][0]['y']; //---------第二步:根据经纬度和关键词获得附近的信息---------- $kv = new SaeKV(); // 初始化KVClient对象 $kv->init(); $url = "http://api.map.baidu.com/place/v2/search?ak=这里填写你的apikey&output=json&query=" . urlencode($kv->get('find')) . "&page_size=10&page_num=0&scope=2&location=$x,$y&radius=2000"; $res = file_get_contents($url); $res = json_decode($res, true); //提取信息 foreach($res['results'] as $k=>$v){ $arr[$k]['name'] = $v['name']; $arr[$k]['address'] = $v['address']; $arr[$k]['img_url'] = 'http://misakaqnxt-public.stor.sinaapp.com/click.png'; $arr[$k]['detail_url'] = isset($v['detail_info']['detail_url'])?$v['detail_info']['detail_url']:''; } //--------第三步:拼接XML字符串-------- $head = "<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[news]]></MsgType> <ArticleCount>10</ArticleCount> <Articles>"; $items = ""; foreach($arr as $v){ $items .= "<item> <Title><![CDATA[" . $v['name'] .":". $v['address'] . "]]></Title> <Description><![CDATA[" . $v['address'] . "]]></Description> <PicUrl><![CDATA[" . $v['img_url'] . "]]></PicUrl> <Url><![CDATA[" . $v['detail_url'] . "]]></Url> </item>"; } $foot = "</Articles></xml>"; $res = $head . $items . $foot; $resultStr = sprintf($res, $fromUsername, $toUsername, $time); echo $resultStr; exit(); }
코드 사용 방법을 이해하지 못한다면 이전 기사를 참조하세요. 간단한 문자 답장 WeChat에서 선택한 기사 조회
사용자 팔로우 공식 계정 후, 호텔 검색 후 답장을 주시고, 위치를 답장하시면 주변 호텔 정보를 받아보실 수 있습니다.
위 글의 내용은 모두의 공부에 도움이 되었으면 좋겠습니다
위 내용은 PHP WeChat 개발은 사용자 응답 키워드\위치를 기반으로 주변 정보를 반환합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기
