百度地图API学习02:C#调用地点检索功能Web API案例精讲

目录

1 准备工作

2 开发文档

3 接口测试

3.1 测试代码及结果

3.2 报错:APP不存在,AK有误请检查再重试及处理方法

4 使用C#调用返回结果并界面显示

4.1 界面搭建

4.2 要素类的定义

4.2.1 定义json返回结果类

4.2.3 相关设置

4.2.4 程序源码

4.2.5 界面展示

5 参考资料


 


今天我们的要做的事情就是,利用百度地图的开发文档,批量获取某一类兴趣点(Point of interest, POI)

比如银行的ATM机,一个城市有很多ATM,最笨的办法是使用百度坐标拾取系统一个一个来,太麻烦

今天介绍一个比较牛逼的办法,且听我一一道来

1 准备工作

  • 以服务器端应用为例,创建服务端应用,勾选地点检索

  • IP白名单自己用可以使用默认

2 开发文档

  • 点击首页的开发文档2.0

  • 找到服务文档:地点检索 -- 服务文档 -- 接口功能介绍

这样我们就得到了一个获取地点的请求链接,下边我们测试一下这个链接:

http://api.map.baidu.com/place/v2/search?query=ATM机&tag=银行&region=北京&output=json&ak=您的ak //GET请求

三个必选参数:

你还可下载如下文件进行更详细的城市经纬度、城市代码和行业分类信息

3 接口测试

3.1 测试代码及结果

我们以内乡县为例,得到搜索结果:

代码:

 

 

http://api.map.baidu.com/place/v2/search?query=ATM机&tag=银行&region=内乡县&output=json&ak=你的浏览器端或服务端应用的ak

 

结果:
{
    "status":0,
    "message":"ok",
    "results":[
        {
            "name":"中国建设银行24小时自助银行(内乡支行)",
            "location":{
                "lat":33.05112,
                "lng":111.846055
            },
            "address":"县衙西路83",
            "province":"河南省",
            "city":"南阳市",
            "area":"内乡县",
            "detail":1,
            "uid":"15a93810e3c27dc014c8f621"
        },
        {
            "name":"河南省农村信用社24小时自助银行",
            "location":{
                "lat":33.053033,
                "lng":111.854251
            },
            "address":"南阳市内乡县菊潭大街129号附近",
            "province":"河南省",
            "city":"南阳市",
            "area":"内乡县",
            "detail":1,
            "uid":"75702dd6505a15ec28d7abf0"
        },
        {
            "name":"中国工商银行24小时自助银行(县衙路店)",
            "location":{
                "lat":33.054578,
                "lng":111.859093
            },
            "address":"菊潭大街与县衙路交汇处向东",
            "province":"河南省",
            "city":"南阳市",
            "area":"内乡县",
            "detail":1,
            "uid":"7b7c972995b6036df8f0cb5f"
        },
        {
            "name":"中国工商银行24小时自助银行服务(郦都大道店)",
            "location":{
                "lat":33.058378,
                "lng":111.843859
            },
            "address":"河南省南阳市内乡县郦都大道",
            "province":"河南省",
            "city":"南阳市",
            "area":"内乡县",
            "detail":1,
            "uid":"36b5812d5209af1f8936eee1"
        },
        {
            "name":"中国邮政储蓄银行24小时自助银行(内乡县丽都大道支行)",
            "location":{
                "lat":33.060039,
                "lng":111.849445
            },
            "address":"范蠡大街与郦都大道交汇处",
            "province":"河南省",
            "city":"南阳市",
            "area":"内乡县",
            "detail":1,
            "uid":"c8b378b48dff20fbb426553e"
        },
        {
            "name":"内乡县农村信用合作联社24小时自助银行(县衙路店)",
            "location":{
                "lat":33.051266,
                "lng":111.847748
            },
            "address":"县衙西路73号",
            "province":"河南省",
            "city":"南阳市",
            "area":"内乡县",
            "detail":1,
            "uid":"294d1ebc12a67ab67ec8764d"
        },
        {
            "name":"河南省农村信用社24小时自助银行(西关分社)",
            "location":{
                "lat":33.050191,
                "lng":111.85332
            },
            "address":"大成路与范蠡大街交叉口东50米",
            "province":"河南省",
            "city":"南阳市",
            "area":"内乡县",
            "detail":1,
            "uid":"7c2418bfbd8e18aaeb1e970e"
        },
        {
            "name":"中国银行24小时自助银行服务",
            "location":{
                "lat":33.060826,
                "lng":111.850447
            },
            "address":"菊潭大街与郦都大道交汇处",
            "province":"河南省",
            "city":"南阳市",
            "area":"内乡县",
            "detail":1,
            "uid":"772b45a24e9eb9857dc87686"
        },
        {
            "name":"中国农业银行24小时自助银行服务(郦都大道店)",
            "location":{
                "lat":33.061291,
                "lng":111.85539
            },
            "address":"河南省南阳市内乡县郦都大道",
            "province":"河南省",
            "city":"南阳市",
            "area":"内乡县",
            "detail":1,
            "uid":"6bc497cda51a75c7eedfca5a"
        },
        {
            "name":"中国工商银行24小时自助银行(内乡支行)",
            "location":{
                "lat":33.04935,
                "lng":111.847295
            },
            "address":"渚阳大街中段56号",
            "province":"河南省",
            "city":"南阳市",
            "area":"内乡县",
            "detail":1,
            "uid":"3810c879d0ba6ef69c09f721"
        }
    ]
}

3.2 报错:APP不存在,AK有误请检查再重试及处理方法

你的ak错误是会报错误:{"status":200,"message":"APP不存在,AK有误请检查再重试"}

你改一下可能还不对,就多使用几次CV大法[复制粘贴]就好了

4 使用C#调用返回结果并界面显示

4.1 界面搭建

只使用前面说到的三个参数:

参数描述标识
query检索关键字txt_LSsearchKeyWords
region检索区域txt_LSsearchRegion
tag检索分类偏好txt_LSsearchType

搭建的界面如下:

4.2 要素类的定义

4.2.1 定义json返回结果类

不用自己写,直接拷贝json文件即可在线生成

在线快捷生成C#的类,网站为:http://www.bejson.com/convert/json2csharp/

public class Location
    {
        /// <summary>
        /// 
        /// </summary>
        public double lat { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public double lng { get; set; }
    }

    public class ResultsItem
    {
        /// <summary>
        /// 中国建设银行24小时自助银行(内乡支行)
        /// </summary>
        public string name { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public Location location { get; set; }
        /// <summary>
        /// 县衙西路83
        /// </summary>
        public string address { get; set; }
        /// <summary>
        /// 河南省
        /// </summary>
        public string province { get; set; }
        /// <summary>
        /// 南阳市
        /// </summary>
        public string city { get; set; }
        /// <summary>
        /// 内乡县
        /// </summary>
        public string area { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public int detail { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string uid { get; set; }
    }

    public class BaiduLocationSearchResult
    {
        /// <summary>
        /// 
        /// </summary>
        public int status { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string message { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public List<ResultsItem> results { get; set; }
    }

4.2.3 相关设置

1) dataGridView控件的设置

禁止用户操作,仅作显示用

添加列信息:

行列宽度的设定

        private void LocationSearchV20_Load(object sender, EventArgs e)
        {
            dgv_LocationSearchRe.Columns[0].Width = dgv_LocationSearchRe.Width / 3;
            dgv_LocationSearchRe.Columns[1].Width = dgv_LocationSearchRe.Width / 6;
            dgv_LocationSearchRe.Columns[2].Width = dgv_LocationSearchRe.Width / 6;
            dgv_LocationSearchRe.Columns[3].Width = dgv_LocationSearchRe.Width / 3;
        }

4.2.4 程序源码

请关注文末公众号,回复“百度地图-地点检索API源码”,即可查看本文完整源代码

4.2.5 界面展示

5 参考资料

  1. C#如何解析JSON数据(反序列化对象)

  2. C#编程学习41:C#成长之路【干货入门,绝对开卷有益】

  3. C# DataGridView添加新行的2个方法

  4. C#通过WebService获取JSON数据并快速解析(百度地图坐标转换API为例)

  5. winform中dataGridView高度和宽度自适应填充完数据的高度和宽度,即dataGridView根据数据自适应大小


源码请关注如下公众号,回复“百度地图-地点检索API源码”。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小薛引路

喜欢的读者,可以打赏鼓励一下

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值