快速入门

本节介绍如何快速使用DuMap Java SDK接入DuMap服务。

创建DuMapClient

DuMapClient是与DuMap服务交互的客户端,DuMap Java SDK的基本功能都是通过DuMapClient完成的。

使用AK/SK创建DuMapClient

通过AK/SK方式访问DuMap服务,用户可以参考下面代码完成初始化客户端的操作。

String ACCESS_KEY_ID = "<your-access-key-id>";                   // 用户的Access Key ID
String SECRET_ACCESS_KEY = "<your-secret-access-key>";           // 用户的Secret Access Key

// 初始化配置
BceClientConfiguration config = new BceClientConfiguration()
    .withCredentials(new DefaultBceCredentials(ACCESS_KEY_ID, SECRET_ACCESS_KEY));

// 初始化一个DuMapClient
DuMapClient client = new DuMapClient(config);

在代码中,变量ACCESS_KEY_ID与SECRET_ACCESS_KEY是系统分配给用户的,均为字符串,用于用户访问位置服务的签名认证。其中ACCESS_KEY_ID对应控制台中的“Access Key ID”, SECRET_ACCESS_KEY对应控制台的“Access Key Secret”。

设置网络参数

用户可以通过BceClientConfiguration对基本网络参数进行设置。

// 初始化配置
BceClientConfiguration config = new BceClientConfiguration();

// 设置网络协议
config.setProtocol(Protocol.HTTPS);

// 设置允许打开的最大连接数
config.setMaxConnections(10);

// 设置建立连接的超时时间
config.setConnectionTimeoutInMillis(5000);

参数说明

通过BceClientConfiguration可以配置的参数如下表所示:

参数 说明
connectionTimeoutInMillis 建立连接的超时时间(单位:毫秒)
localAddress 本地地址
maxConnections 允许打开的最大HTTP连接数
protocol 连接协议类型
proxyDomain 访问NTLM验证的代理服务器的Windows域名
proxyHost 代理服务器主机地址
proxyPassword 代理服务器验证的密码
proxyPort 代理服务器端口
proxyPreemptiveAuthenticationEnabled 是否设置用户代理认证
proxyUsername 代理服务器验证的用户名
proxyWorkstation NTLM代理服务器的Windows工作站名称
retryPolicy 连接重试策略
socketBufferSizeInBytes Socket缓冲区大小
socketTimeoutInMillis 通过打开的连接传输数据的超时时间(单位:毫秒)
userAgent 用户代理,指HTTP的User-Agent头

地点检索

行政区划区域检索

行政区划区域检索示例代码如下:

PlaceSearchByRegionParam param = PlaceSearchByRegionParam.builder()
            .query("ATM机")                 // 检索关键字
            .tag("银行")                    // 检索分类偏好
            .region("北京")                 // 检索行政区划区域
            .output("json")                // 输出格式为json字符串或者xml字符串 
            .build();
String response = client.placeQuery("<your-app-id>", param); // "<your-app-id>"为用户的appId,即前端应用列表中的应用id

上面代码通过PlaceSearchByRegionParam构建行政区划区域检索的参数,更多请求参数及返回参数说明请参考地点检索服务接口文档

圆形区域检索

圆形区域检索示例代码如下:

PlaceSearchByLocationParam param = PlaceSearchByLocationParam.builder()
            .query("银行")                 // 检索关键字
            .location("39.915,116.404")  // 圆形区域检索中心点
            .radius("2000")               // 圆形区域检索半径
            .output("json")               // 输出格式为json字符串或者xml字符串 
            .build();
String response = client.placeQuery("<your-app-id>", param); // "<your-app-id>"为用户的appId,即前端应用列表中的应用id

上面代码通过PlaceSearchByLocationParam构建圆形区域检索的参数,更多请求参数及返回参数说明请参考地点检索服务接口文档

矩形区域检索

矩形区域检索示例代码如下:

PlaceSearchByBoundsParam placeSearchByBoundsParam = PlaceSearchByBoundsParam.builder()
            .query("美食")                                      // 检索关键字
            .bounds("38.76623,116.43213,39.54321,116.46773")   // 检索矩形区域
            .retCoordtype("gcj02ll")                           // 添加后POI返回国测局经纬度坐标
            .output("json")                                    // 输出格式为json字符串或者xml字符串
            .build();
String response = client.placeQuery("<your-app-id>", placeSearchByBoundsParam); // "<your-app-id>"为用户的appId,即前端应用列表中的应用id

上面代码通过PlaceSearchByBoundsParam构建矩形区域检索的参数,更多请求参数及返回参数说明请参考地点检索服务接口文档

地点详情检索

地点详情检索示例代码如下:

PlaceDetailParam param = PlaceDetailParam.builder()
            .uid("08db2caeab1dc6dcfb2213da")          // 检索poi的uid
            .scope(2)                                 // 检索结果详细程度
            .output("json")                           // 输出格式为json字符串或者xml字符串
            .build();
String response = client.placeDetail("<your-app-id>", param); // "<your-app-id>"为用户的appId,即前端应用列表中的应用id

上面代码通过PlaceDetailParam构建地点详情检索的参数,更多请求参数及返回参数说明请参考地点检索服务接口文档

正/逆地理编码

地理编码

地理编码示例代码如下:

GeocoderParam param = GeocoderParam.builder()
            .address("北