loading请求处理中...

微信公众平台接口开发 搜索附近商家

2021-12-01 08:56:07 阅读 11067次 标签: 开发 作者: 910156420@qq.com

  不同的微信公众平台发布的内容和功能是不一样的,而决定这些不同的根本依据就是微信公众平台接口开发,这也是微信公众平台生命力所在。地图里面都有附近商家搜索的服务,有些人就想要利用微信也实现这一服务,那么就得进行微信公众平台接口开发

微信公众平台接口开发 搜索附近商家

  百度地图Place API 是一类简单的HTTP接口,用于返回查询某个区域的某类POI数据,且提供单个POI的详情查询服务,用户可以使用C#、C++、Java等开发语言发送HTTP请求且接收json、xml的数据。

  Place API 提供区域检索POI服务、POI详情服务与团购信息检索服务、商家团购详情查询。区域检索POI服务提供三种区域检索方法:城市内检索、矩形检索、圆形区域检索。

  我们使用圆形区域检索来实现附近搜索功能。

  place区域检索POI服务接口如下:

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

  参数

  是否必须

  默认值

  格式举例

  含义

  location

  是

  无

  38.76623,116.43213

  lat<纬度>,lng<经度>

  周边检索中心点,不支持多个点

  radius(r)

  否

  无

  2000

  周边检索半径,单位为米

  q(query)

  是

  无

  中关村、ATM、百度大厦

  检索关键字,周边检索和矩形区域内检索支持多个关键字并集检索,不同关键字间以$符号分隔,最多支持10个关键字检索。如:”银行$酒店”。

  tag

  否

  无

  日式烧烤/铁板烧、朝外大街

  标签项,与q组合进行检索

  output

  否

  xml

  json或xml

  输出格式为json或者xml

  scope

  是

  检索结果详细程度。取值为1 或空,则返回基本信息;取值为2,返回检索POI详细信息

  filter

  否

  无

  filter=industry_type:cater

  |sort_name:price

  |sort_rule:0

  |price_section:100,200

  |groupon:0

  |discount:0

  检索过滤条件,当scope取值为2时,可以设置filter进行排序。

  industry_type:行业类型

  sort_name:排序字段

  sort_rule:排序规则,取值如下:0:从高到低,1:从低到高;

  price_section:价格区间;

  groupon:是否有团购,1为有团购,0为无团购;

  discount:是否打折,1为有打折,0为无打折;

  page_size

  否

  10

  10

  范围记录数量,默认为10条记录,最大返回20条。多关键字检索时,返回的记录数为关键字个数*page_size。

  page_num

  否

  0

  0、1、2

  分页页码,默认为0,0代表第一页,1代表第二页,以此类推。

  ak

  是

  无

  E4805d16520de693a3fe707cdc962045

  用户的访问密钥,必填项。v2之前该属性为key。

  sn

  否

  无

  用户的权限签名。

  timestamp

  否

  无

  设置sn后该值必填。

  调用举例如下:

  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

  二、程序实现

  百度地图类定义如下

  复制代码

  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['key'] = "401f9a693dd267dd9a4661ec0895fb20";

  $this->auth_params['output'] = "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;

  }

  }

  复制代码

  获取附近的调用代码如下:

  复制代码

  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;

  }

  复制代码

  微信公众平台接口开发出来的功能要与正规微信公众平台相适应,不能够太过突兀或是完全不搭的,这样是没有效果的。如果你有需要供接口开发、微信公众平台接口开发、微信接口开发平台等服务的话,建议你可以通过网络找寻到“一品威客网”,一品威客网上有众多开发设计威客为你提供接口开发服务。

后端开发公司推荐

成为一品威客服务商,百万订单等您来有奖注册中

留言( 展开评论

快速发任务

价格是多少?怎样找到合适的人才?

官方顾问免费为您解答

 
后端开发相关任务
DESIGN TASK 更多
可视化展示工具,开发

¥1000 已有2人投标

资产管理小程序开发

¥5000 已有9人投标

QT 设备modbus采集,控制开发

¥3000 已有2人投标

基于浏览器开发插件

¥5000 已有0人投标

电商APP 开发( iOS)

¥10000 已有3人投标

出租房的微信小程序开发

¥1000 已有4人投标