高德云图 云存储 云检索 数据接口

TP5 位置:/extends/ice/Amap.php 使用:use ice\Amap

<?php
/**
 * 高德云图数据接口
 * Author: IceCry <http://www.zhinizhiwo.com>
 * Date: 2017-10-14 09:01
 */
namespace ice;

class Amap
{
    private static $key;
    private static $tableid;

    public function __construct($key='', $tableid='') {
        if($key===''){
            die('key required !');
        }
        self::$key = $key;
        self::$tableid = $tableid;
    }

    /**
     * 创建云图数据表
     *
     * @param      <type>  $name   表名
     * @param      <type>  $name   数字前面
     * 
     * http://yuntuapi.amap.com/datamanage/table/create
     * 返回值 status info tableid
     */
    public function create_table($name='', $sig='')
    {
        $name = $name ? $name : date('YmdHis');
        $url = "http://yuntuapi.amap.com/datamanage/table/create";

        $data = [
            'key' => self::$key,
            'name' => $name,
            'sig' => $sig
        ];

        $res = $this->https_request($url, $data);

        return $res;
    }

    /**
     * 创建单条位置信息
     *
     * @param      <type>  $loctype   定位方式 1经纬度 2地址
     * @param      <type>  $_location 经纬度
     * @param      <type>  $_address  地址
     * @param      <type>  $_name     数据名称
     * @param      <type>  $coordtype 坐标类型 1: gps 2: autonavi 3: baidu
     * @param      <type>  $sig       数字签名
     * @param      <type>  $diy      用户自定义数据
     * 
     * http://yuntuapi.amap.com/datamanage/data/create
     * 返回值 status info _id
     */
    public function deal_single_data($loctype=1, $_location='', $_address='', $_name='', $coordtype='3', $sig='', $diy=array(), $isUpdate=false)
    {
        $url = 'http://yuntuapi.amap.com/datamanage/data/create';
        if($isUpdate){
            $url = 'http://yuntuapi.amap.com/datamanage/data/update';
        }
        //基础信息 仅处理经纬度方式
        $info = [
            '_name' => $_name,
            '_location' => $_location,
            'coordtype' => $coordtype,
            '_address' => $_address,
        ];
        $info = json_encode(array_merge($info, $diy));
        $data = [
            'key' => self::$key,
            'tableid' => self::$tableid,
            'loctype' => $loctype,
            'data' => $info
        ];

        $res = https_request($url, $data);

        return $res;
    }

    /**
     * 暂无用 使用高德后台上传
     */
    public function add_multi_data()
    {

    }

    /**
     * 删除单条/多条数据
     *
     * @param      string  $ids      数据1-50条 _id 1,3,4 
     * @param      string  $sig      The signal
     * 
     * 返回值 status info success fail成功/失败条数
     */
    public function delete_data($ids='', $sig='')
    {
        $url = "http://yuntuapi.amap.com/datamanage/data/delete";

        $data = [
            'key' => self::$key,
            'tableid' => self::$tableid,
            'ids' => $ids,
            'sig' => $sig
        ];

        $res = $this->https_request($url, $data);
        $res = json_decode($res);
        
        return $res;
    }

    /**
     * 获取批量处理进度 暂无用
     */
    public function get_import_status()
    {

    }

    /**
     * 云检索 本地检索
     *
     * @param      string  $keywords 搜索关键词
     * @param      string  $city     中文城市
     * @param      string  $filter   过滤条件
     * @param      string  $sortrule 排序规则
     * @param      string  $limit    分页条数
     * @param      string  $page     当前页
     * @param      string  $sig      数字签名
     */
    public function search_local($keywords=' ', $city='全国', $filter='', $sortrule='', $limit=10, $page=1, $sig='')
    {
        $url = 'http://yuntuapi.amap.com/datasearch/local';
        $data = [
            'key' => self::$key,
            'tableid' => self::$tableid,
            'keywords' => $keywords,
            'city' => $city,
            'filter' => $filter,
            'sortrule' => $sortrule,
            'limit' => $limit,
            'page' => $page,
            'sig' => $sig
        ];

        $res = $this->https_request($url, $data, true);

        return $res;
    }

    /**
     * 云检索 周边检索
     *
     * @param      string  $keywords 搜索关键词
     * @param      string  $center   中心经纬度
     * @param      string  $radius   查询半径
     * @param      string  $filter   过滤条件
     * @param      string  $sortrule 排序规则
     * @param      string  $limit    分页条数
     * @param      string  $page     当前页
     * @param      string  $sig      数字签名
     */
    public function search_around($keywords=' ', $center='119.168162,36.713983', $radius='3000', $filter='', $sortrule='', $limit=10, $page=1, $sig='')
    {
        $url = 'http://yuntuapi.amap.com/datasearch/around';
        $data = [
            'key' => self::$key,
            'tableid' => self::$tableid,
            'keywords' => $keywords,
            'center' => $center,
            'radius' => $radius,
            'filter' => $filter,
            'sortrule' => $sortrule,
            'limit' => $limit,
            'page' => $page,
            'sig' => $sig
        ];

        $res = $this->https_request($url, $data, true);

        return $res;
    }

    /**
     * 多边形检索 暂无用
     */
    public function search_polygon()
    {

    }

    /**
     * 云检索 id检索(poi详情检索)
     *
     * @param      string  $_id      地图数据id
     * @param      string  $sig      数字签名
     *
     * @return     <type>  ( description_of_the_return_value )
     */
    public function search_id($_id='', $sig='')
    {
        $url = 'http://yuntuapi.amap.com/datasearch/id';
        $data = [
            'key' => self::$key,
            'tableid' => self::$tableid,
            '_id' => $_id,
            'sig' => $sig
        ];

        $res = $this->https_request($url, $data, true);

        return $res;
    }

    /**
     * 云检索 按条件检索数据(可遍历整表数据)
     * 
     * @param      string  $filter   过滤条件
     * @param      string  $sortrule 排序规则
     * @param      string  $limit    分页条数
     * @param      string  $page     当前页
     * @param      string  $sig      数字签名
     */
    public function search_by_condition($filter='', $sortrule='', $limit=10, $page=1, $sig='')
    {
        $url = 'http://yuntuapi.amap.com/datamanage/data/list';
        $data = [
            'key' => self::$key,
            'tableid' => self::$tableid,
            'filter' => $filter,
            'sortrule' => $sortrule,
            'limit' => $limit,
            'page' => $page,
            'sig' => $sig
        ];

        $res = $this->https_request($url, $data, true);

        return $res;
    }

    /**
     * 云检索 数据分布检索
     * 
     * @param      string  $keywords 搜索关键词
     * @param      string  $center   中心经纬度
     * @param      string  $radius   查询半径
     * @param      string  $filter   过滤条件
     * @param      string  $sortrule 排序规则
     * @param      string  $limit    分页条数
     * @param      string  $page     当前页
     * @param      string  $sig      数字签名
     */
    public function search_area_count($keywords=' ', $type='', $country='中国', $province='', $city='', $filter='', $sig='', $callback='cb')
    {
        $data = [
            'key' => self::$key,
            'tableid' => self::$tableid,
            'filter' => $filter,
            // 'callback' => $callback,
            'sig' => $sig
        ];
        switch ($type) {
            case 'province':
                $url = 'http://yuntuapi.amap.com/datasearch/statistics/province';
                $data['country'] = $country;
                break;
            case 'city':
                $url = 'http://yuntuapi.amap.com/datasearch/statistics/city';
                $data['province'] = $province;
                break;
            case 'district':
                $url = 'http://yuntuapi.amap.com/datasearch/statistics/district';
                $data['province'] = $province;
                $data['city'] = $city;
                break;
            
            default:
                $url = '';
                break;
        }

        $res = $this->https_request($url, $data, true);

        return $res;
    }


    /**
     * curl
     *
     * @param      <type>  $url    The url
     * @param      <type>  $data   The data
     * @param      <type>  $isget  是否为get请求
     *
     * @return     <type>  ( description_of_the_return_value )
     */
    public function https_request($url, $data = null, $isget = false)
    {
        $headers = array(
            'Cache-Control:no-cache',
            'Pragma:no-cache'
        );

        if($isget){
            $url .= '?';
            if(is_array($data)){
                $url .= http_build_query($data);
            }elseif(is_string($data)) {
                $url .= $data;
            }
        }

        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
        curl_setopt($curl, CURLOPT_TIMEOUT,3);
        if (!empty($data) && !$isget){
            curl_setopt($curl, CURLOPT_POST, 1);
            curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($data));
        }
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
        $output = curl_exec($curl);
        curl_close($curl);
        return $output;
    }

}

Tags: 笔记

添加新评论