高德7java高德开放平台 | 高德地图API注册账号
高德7java高德开放平台 | 高德地图API注册账号
https://blog.csdn.net/java_wucao/article/details/77800891
高德地图爬取杭州市全部的超市信息,放入mongodb的数据库中。做地理位置查询。(mongodb这部分有时间补上)
首先去高德地图创建一个开发者账号,获取一个开发web服务的高德key.这个是必须要有的,可以用我这个从百度到的key试一下。
废话不说了直接上代码
-
package com.pingogo.visit.service;
-
-
import com.alibaba.fastjson.JSONArray;
-
import com.alibaba.fastjson.JSONObject;
-
import com.pingogo.api.common.HttpUtils;
-
import com.pingogo.visit.domain.Shop;
-
import jxl.Cell;
-
import jxl.Workbook;
-
import jxl.read.biff.BiffException;
-
import org.apache.commons.lang3.StringUtils;
-
import org.apache.poi.hssf.usermodel.HSSFCell;
-
import org.apache.poi.hssf.usermodel.HSSFRow;
-
import org.apache.poi.hssf.usermodel.HSSFSheet;
-
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
-
//import org.apache.poi.ss.usermodel.Workbook;
-
import org.slf4j.Logger;
-
import org.slf4j.LoggerFactory;
-
-
import java.io.*;
-
import java.math.BigDecimal;
-
import java.util.ArrayList;
-
import java.util.HashMap;
-
import java.util.List;
-
import java.util.Map;
-
-
/**
-
* Created by cw on 2017/8/29.
-
*
-
*/
-
public class AddressLngLatExchange {
-
private static final String KEY = "389880a06e3f893ea46036f030c94700";
-
private static final String OUTPUT = "JSON";
-
private static final String GET_LNG_LAT_URL = "http://restapi.amap.com/v3/geocode/geo";
-
-
private static final String GET_LNG_PIO_URL = "http://restapi.amap.com/v3/place/polygon";
-
-
private static final Logger LOGGER = LoggerFactory.getLogger(AddressLngLatExchange.class);
-
-
-
//获取指定地点经纬度
-
public static String[] getLngLatFromOneAddr(String address){
-
if(StringUtils.isBlank(address)) {
-
LOGGER.error("地址(" + address + ")为null或者空");
-
return null;
-
}
-
Map<String, String> params = new HashMap<String, String>();
-
params.put("address", address);
-
params.put("output", OUTPUT);
-
params.put("key", KEY);
-
String result = HttpUtils.URLPost(GET_LNG_LAT_URL,params,"");
-
JSONObject jsonObject = JSONObject.parseObject(result);
-
String[] lngLatArr = new String[2];
-
//拿到返回报文的status值,高德的该接口返回值有两个:0-请求失败,1-请求成功;
-
int status = Integer.valueOf(jsonObject.getString("status"));
-
if(status == 1) {
-
JSONArray jsonArray = jsonObject.getJSONArray("geocodes");
-
for(int i = 0; i < jsonArray.size(); i++) {
-
JSONObject json = jsonArray.getJSONObject(i);
-
String lngLat = json.getString("location");
-
lngLatArr = lngLat.split(",");
-
}
-
} else {
-
String errorMsg = jsonObject.getString("info");
-
LOGGER.error("地址(" + address + ")" + errorMsg);
-
}
-
return lngLatArr;
-
}
-
-
public static List<Shop> initialData(String lonLat, String keyword, List<Shop> shopListSon){
-
if(StringUtils.isBlank(keyword)) {
-
LOGGER.error("地址(" + keyword + ")为null或者空");
-
}
-
Map<String, String> params = new HashMap<String, String>();
-
try {
-
Thread.sleep(5000);
-
} catch (InterruptedException e1) {
-
e1.printStackTrace();
-
}
-
params.put("polygon", lonLat);//"118.21,29.11;120.30,30.33"
-
params.put("output", OUTPUT);
-
params.put("keywords", keyword);
-
params.put("offset", "20");
-
params.put("page", "1");
-
params.put("key", KEY);
-
String result = HttpUtils.URLGet(GET_LNG_PIO_URL,params,"UTF-8");
-
JSONObject jsonObject = JSONObject.parseObject(result);
-
int statusOne = Integer.valueOf(jsonObject.getString("status"));
-
//第一次获取数据时做的判断
-
if(statusOne==1){
-
int count=Integer.valueOf(jsonObject.getString("count"));
-
int pageNumber=count/20;
-
int remainder=count%20;
-
if(remainder>0)pageNumber=pageNumber+1;
-
for(int i=1;i<=pageNumber;i++){
-
params.put("page", String.valueOf(i));
-
result = HttpUtils.URLGet(GET_LNG_PIO_URL,params,"UTF-8");
-
JSONObject jsonObject2 = JSONObject.parseObject(result);
-
System.out.println("+++++++++"+result);
-
//拿到返回报文的status值,高德的该接口返回值有两个:0-请求失败,1-请求成功;
-
int status = Integer.valueOf(jsonObject2.getString("status"));
-
if(status == 1) {
-
JSONArray jsonArray = jsonObject2.getJSONArray("pois");
-
if(jsonArray.size()>0){
-
for(int j =0;j<jsonArray.size();j++){
-
Shop shop =new Shop();
-
JSONObject jsonObject1 =jsonArray.getJSONObject(j);
-
shop.setShopName(jsonObject1.getString("name"));
-
shop.setSpecificAddress(jsonObject1.getString("address"));
-
shop.setId(jsonObject1.getString("id"));
-
String [] initLonLat =jsonObject1.getString("location").split(",");
-
shop.setLongitude(initLonLat[0]);
-
shop.setLatitude(initLonLat[1]);
-
shopListSon.add(shop);
-
//DBObject doci = new BasicDBObject("shopId", "300"+i).append("shopName", "人生得意"+i).append("shopStatus",0).append("specificAddress","天堂"+i).append("gps", new Point(new Position(lon, lat)));
-
-
}
-
}
-
-
} else {
-
String errorMsg = jsonObject.getString("info");
-
LOGGER.error("地址(" + keyword + ")" + errorMsg);
-
}
-
}
-
-
}
-
return shopListSon;
-
-
}
-
-
//从高德地图上取数据
-
// public static void main(String[] args) {
-
// List<Shop> listShop =new ArrayList<>();
-
// //东经118°21′-120°30′,北纬29°11′-30°33′。杭州位置
-
// for(double i=118.20;i<=120.31;i=i+0.1){
-
// for(double j=29.10;j<=30.33;j=j+0.1){
-
// List<Shop> listShopSon =new ArrayList<>();
-
// double lonHead=i;
-
// double latHead=j;
-
// double lonTail=i+0.1;
-
// double latTail=j+0.1;
-
// String LonLat=lonHead+","+latHead+";"+lonTail+","+latTail;
-
// listShopSon =initialData(LonLat,"便利店",listShopSon);
-
// for(int n=0;n<listShopSon.size();n++){
-
// System.out.println("店铺地址:"+listShopSon.get(n).getSpecificAddress());
-
// }
-
// if(listShopSon.size()>0){
-
// listShop.addAll(listShopSon);
-
// }
-
// System.out.println("ListShop的大小:"+listShop.size());
-
// double d =Distance(lonHead,latHead,lonTail,latTail);
-
// System.out.println("两点距离"+d);
-
//
-
// }
-
//
-
// }
-
//
-
// System.out.println("ListShop的大小:"+listShop.size());
-
// creatExcel(listShop);
-
// }
-
-
public static void main(String[] args) {
-
readFile("D:\\geode\\222.xls");
-
}
-
-
-
//写入excel中
-
public static void creatExcel(List<Shop> shopList){
-
HSSFWorkbook workbook = new HSSFWorkbook();
-
//第二部,在workbook中创建一个sheet对应excel中的sheet
-
HSSFSheet sheet = workbook.createSheet("高德地图数据");
-
//第三部,在sheet表中添加表头第0行,老版本的poi对sheet的行列有限制
-
HSSFRow row = sheet.createRow(0);
-
//第四步,创建单元格,设置表头
-
HSSFCell cell = row.createCell(0);
-
cell.setCellValue("店铺id");
-
cell = row.createCell(1);
-
cell.setCellValue("店铺名称");
-
cell = row.createCell(2);
-
cell.setCellValue("店铺地址");
-
cell = row.createCell(3);
-
cell.setCellValue("经度");
-
cell = row.createCell(4);
-
cell.setCellValue("纬度");
-
-
//第五步,写入实体数据,实际应用中这些数据从数据库得到,对象封装数据,集合包对象。对象的属性值对应表的每行的值
-
for (int i = 0; i < shopList.size(); i++) {
-
HSSFRow row1 = sheet.createRow(i + 1);
-
Shop shop = shopList.get(i);
-
//创建单元格设值
-
row1.createCell(0).setCellValue(shop.getId());
-
row1.createCell(1).setCellValue(shop.getShopName());
-
row1.createCell(2).setCellValue(shop.getSpecificAddress());
-
row1.createCell(3).setCellValue(shop.getLongitude());
-
row1.createCell(4).setCellValue(shop.getLatitude());
-
}
-
-
//将文件保存到指定的位置
-
try {
-
FileOutputStream fos = new FileOutputStream("D:\\geode\\高德便利店地图数据.xls");
-
workbook.write(fos);
-
System.out.println("写入成功");
-
fos.close();
-
} catch (IOException e) {
-
e.printStackTrace();
-
}
-
}
-
-
public static double Distance(double long1, double lat1, double long2, double lat2) {
-
double a, b, R;
-
R =6371; // 地球半径 6371km
-
lat1 = lat1 * Math.PI / 180.0;
-
lat2 = lat2 * Math.PI / 180.0;
-
a = lat1 - lat2;
-
b = (long1 - long2) * Math.PI / 180.0;
-
double d;
-
double sa2, sb2;
-
sa2 = Math.sin(a / 2.0);
-
sb2 = Math.sin(b / 2.0);
-
d = 2
-
* R
-
* Math.asin(Math.sqrt(sa2 * sa2 + Math.cos(lat1)
-
* Math.cos(lat2) * sb2 * sb2));
-
BigDecimal bigDecimal = new BigDecimal(d*1000);
-
Double din = bigDecimal.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
-
return din ;
-
}
-
-
public static List<Shop> readFile(String filename){
-
List<Shop> shopList =new ArrayList<>();
-
Workbook wb=null;
-
Cell cell=null;
-
try {
-
File f=new File(filename);
-
InputStream in=new FileInputStream(f); //创建输入流
-
wb= Workbook.getWorkbook(in); //获取Excel文件对象
-
jxl.Sheet s=wb.getSheet(0); //获取文件的指定工作表,默认为第一个
-
String value=null;
-
for(int i=1;i<s.getRows();i++){//表头目录不需要,从第一行开始
-
Shop shop =new Shop();
-
for(int j=0;j<s.getColumns();j++){
-
cell=s.getCell(j, i);
-
value=cell.getContents();
-
if(j==0){
-
shop.setId(value);
-
}else if(j==1){
-
shop.setShopName(value);
-
}else if(j==2){
-
shop.setSpecificAddress(value);
-
}else if(j==3){
-
shop.setLongitude(value);
-
}else if(j==4){
-
shop.setLatitude(value);
-
}
-
// System.out.println("value:"+value);
-
}
-
shopList.add(shop);
-
}
-
-
} catch (FileNotFoundException e) {
-
// TODO Auto-generated catch block
-
e.printStackTrace();
-
} catch (BiffException e) {
-
// TODO Auto-generated catch block
-
e.printStackTrace();
-
} catch (IOException e) {
-
// TODO Auto-generated catch block
-
e.printStackTrace();
-
}
-
return shopList;
-
}
-
}
由于高德地图对他的数据做了保护,我这边采用的是矩形搜索。 百度到杭州的经纬度划分成多个小矩形,然后调用高德地图的API服务。我这边将爬取的数据写入excel表格中,一是为了展示验证数据是否准确,二是怕直接写入会不会有内存泄漏问题。我上面的代码有写入excel和读取excel的代码。不过要注意一下 我用得jar包不同。写入用的poi,读取用的是jxl.
这边调用http请求是客户端,代码如下。是在网上找到的,首先谢谢分享的人。因为有段时间,原文地址忘记了。一开始用的是
URL myURL = null; URLConnection httpsConn = null; try { myURL = new URL(url); } catch (MalformedURLException e) { e.printStackTrace(); } InputStreamReader insr = null; BufferedReader br = null; httpsConn = (URLConnection) myURL.openConnection();// 不使用代理
然后在tomcat项目中调用时,报错了,原因现在还没有弄清楚,知道原因的告诉我一二。
-
package com.pingogo.api.common;
-
-
import java.io.IOException;
-
import java.io.UnsupportedEncodingException;
-
import java.net.URLEncoder;
-
import java.util.Iterator;
-
import java.util.Map;
-
import java.util.Set;
-
-
import org.apache.commons.httpclient.HttpClient;
-
import org.apache.commons.httpclient.HttpException;
-
import org.apache.commons.httpclient.HttpStatus;
-
import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager;
-
import org.apache.commons.httpclient.methods.GetMethod;
-
import org.apache.commons.httpclient.methods.PostMethod;
-
import org.apache.commons.logging.Log;
-
import org.apache.commons.logging.LogFactory;
-
-
/**
-
* HTTP工具类
-
*
-
* @author lixiangyang
-
*
-
*/
-
public class HttpUtils {
-
-
private static Log log = LogFactory.getLog(HttpUtils.class);
-
-
/**
-
* 定义编码格式 UTF-8
-
*/
-
public static final String URL_PARAM_DECODECHARSET_UTF8 = "UTF-8";
-
-
/**
-
* 定义编码格式 GBK
-
*/
-
public static final String URL_PARAM_DECODECHARSET_GBK = "GBK";
-
-
private static final String URL_PARAM_CONNECT_FLAG = "&";
-
-
private static final String EMPTY = "";
-
-
private static MultiThreadedHttpConnectionManager connectionManager = null;
-
-
private static int connectionTimeOut = 25000;
-
-
private static int socketTimeOut = 25000;
-
-
private static int maxConnectionPerHost = 20;
-
-
private static int maxTotalConnections = 20;
-
-
private static HttpClient client;
-
-
static{
-
connectionManager = new MultiThreadedHttpConnectionManager();
-
connectionManager.getParams().setConnectionTimeout(connectionTimeOut);
-
connectionManager.getParams().setSoTimeout(socketTimeOut);
-
connectionManager.getParams().setDefaultMaxConnectionsPerHost(maxConnectionPerHost);
-
connectionManager.getParams().setMaxTotalConnections(maxTotalConnections);
-
client = new HttpClient(connectionManager);
-
}
-
-
/**
-
* POST方式提交数据
-
* @param url
-
* 待请求的URL
-
* @param params
-
* 要提交的数据
-
* @param enc
-
* 编码
-
* @return
-
* 响应结果
-
* @throws IOException
-
* IO异常
-
*/
-
public static String URLPost(String url, Map<String, String> params, String enc){
-
enc=URL_PARAM_DECODECHARSET_UTF8;
-
String response = EMPTY;
-
PostMethod postMethod = null;
-
try {
-
postMethod = new PostMethod(url);
-
postMethod.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=" + enc);
-
//将表单的值放入postMethod中
-
Set<String> keySet = params.keySet();
-
for(String key : keySet){
-
String value = params.get(key);
-
postMethod.addParameter(key, value);
-
}
-
//执行postMethod
-
int statusCode = client.executeMethod(postMethod);
-
if(statusCode == HttpStatus.SC_OK) {
-
response = postMethod.getResponseBodyAsString();
-
}else{
-
log.error("响应状态码 = " + postMethod.getStatusCode());
-
}
-
}catch(HttpException e){
-
log.error("发生致命的异常,可能是协议不对或者返回的内容有问题", e);
-
e.printStackTrace();
-
}catch(IOException e){
-
log.error("发生网络异常", e);
-
e.printStackTrace();
-
}finally{
-
if(postMethod != null){
-
postMethod.releaseConnection();
-
postMethod = null;
-
}
-
}
-
-
return response;
-
}
-
-
/**
-
* GET方式提交数据
-
* @param url
-
* 待请求的URL
-
* @param params
-
* 要提交的数据
-
* @param enc
-
* 编码
-
* @return
-
* 响应结果
-
* @throws IOException
-
* IO异常
-
*/
-
public static String URLGet(String url, Map<String, String> params, String enc){
-
-
String response = EMPTY;
-
GetMethod getMethod = null;
-
StringBuffer strtTotalURL = new StringBuffer(EMPTY);
-
-
if(strtTotalURL.indexOf("?") == -1) {
-
strtTotalURL.append(url).append("?").append(getUrl(params, enc));
-
} else {
-
strtTotalURL.append(url).append("&").append(getUrl(params, enc));
-
}
-
log.debug("GET请求URL = \n" + strtTotalURL.toString());
-
-
try {
-
getMethod = new GetMethod(strtTotalURL.toString());
-
getMethod.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=" + enc);
-
//执行getMethod
-
int statusCode = client.executeMethod(getMethod);
-
if(statusCode == HttpStatus.SC_OK) {
-
response = getMethod.getResponseBodyAsString();
-
}else{
-
log.debug("响应状态码 = " + getMethod.getStatusCode());
-
}
-
}catch(HttpException e){
-
log.error("发生致命的异常,可能是协议不对或者返回的内容有问题", e);
-
e.printStackTrace();
-
}catch(IOException e){
-
log.error("发生网络异常", e);
-
e.printStackTrace();
-
}finally{
-
if(getMethod != null){
-
getMethod.releaseConnection();
-
getMethod = null;
-
}
-
}
-
-
return response;
-
}
-
-
/**
-
* 据Map生成URL字符串
-
* @param map
-
* Map
-
* @param valueEnc
-
* URL编码
-
* @return
-
* URL
-
*/
-
private static String getUrl(Map<String, String> map, String valueEnc) {
-
-
if (null == map || map.keySet().size() == 0) {
-
return (EMPTY);
-
}
-
StringBuffer url = new StringBuffer();
-
Set<String> keys = map.keySet();
-
for (Iterator<String> it = keys.iterator(); it.hasNext();) {
-
String key = it.next();
-
if (map.containsKey(key)) {
-
String val = map.get(key);
-
String str = val != null ? val : EMPTY;
-
try {
-
str = URLEncoder.encode(str, valueEnc);
-
} catch (UnsupportedEncodingException e) {
-
e.printStackTrace();
-
}
-
url.append(key).append("=").append(str).append(URL_PARAM_CONNECT_FLAG);
-
}
-
}
-
String strURL = EMPTY;
-
strURL = url.toString();
-
if (URL_PARAM_CONNECT_FLAG.equals(EMPTY + strURL.charAt(strURL.length() - 1))) {
-
strURL = strURL.substring(0, strURL.length() - 1);
-
}
-
-
return (strURL);
-
}
-
}
maven里的配置
<dependency> <groupId>commons-httpclient</groupId> <artifactId>commons-httpclient</artifactId> <version>3.1</version> </dependency
最后给大家看一下我爬取出来的数据
如果有什么不对的地方,希望大家指点。
-
java高德开放平台 | 高德地图API注册账号,并且申请web服务的AK密钥,每次发送请求需要带着这个key去认证。注册账号登陆后点击右上角的控制台 ->应用管理 -> 创建应用 -> 添加新key,注意选择web api,就得到了一个可以使用web服务的key密钥。
-
查找高德地图提供的web api下的搜索模块使用API文档开发指南
之前本人试过通过高德地图中的搜索页面搜索功能,不输入key,但是访问次数有一定的限制,就会让输入拼图验证
这种方法不可取只能去注册key,然后去获得需要的数据
关于高德地图信息抓取,我们根据高德地图搜索POI文档 ,简单的说下两种比较实用的方法
第一种 多边形搜索
多边形搜索需要在地图上绘制经度和纬度用","分割,经度在前,纬度在后,坐标对用"|"分割。经纬度小数点后不得超过6位。 多边形为矩形时,可传入左上右下两顶点坐标对;其他情况下首尾坐标对需相同
示例:
如上图四个marker点,调用高德地图POI搜索功能即可搜索这个片区内的数据信息
测试接口:
https://restapi.amap.com/v3/place/polygon?polygon=108.875542,34.193769|108.880032,34.193724|108.880038,34.191466|108.875633,34.191399|108.875542,34.193769&key=<自己的Key>
可传入keywords和types,当keywords和types为空的时候, 会默认指定types为120000(商务住宅)&150000(交通设施服务)
查询POI类型下载POI分类编码和城市编码表
POI分类编码部分截图
由此可见,可以根据需要的菜系类型查找某一地区菜系的分布效果
返回数据格式:
名称 |
含义 |
规则说明 | |||
---|---|---|---|---|---|
status |
结果状态值,值为0或1 |
0:请求失败;1:请求成功 |
|||
info |
返回状态说明 |
status为0时,info返回错误原因,否则返回“OK”。详情参阅info状态表 |
|||
count |
搜索方案数目(最大值为1000) |
||||
suggestion |
城市建议列表 |
当用户输入的词语为泛搜索词的时候,将显示城市列表 |
|||
keywords |
唯一ID |
||||
cities |
城市列表 |
||||
name |
名称 |
||||
num |
该城市包含此关键字的个数 |
||||
citycode |
该城市的citycode |
||||
adcode |
该城市的adcode |
||||
pois |
搜索POI信息列表 |
||||
poi |
POI信息 |
||||
id |
唯一ID |
||||
parent |
父POI的ID |
当前POI如果有父POI,则返回父POI的ID。可能为空 |
|||
name |
名称 |
||||
type |
兴趣点类型 |
顺序为大类、中类、小类 例如:餐饮服务;中餐厅;特色/地方风味餐厅 |
|||
typecode |
兴趣点类型编码 |
例如:050118 |
|||
biz_type |
行业类型 |
||||
address |
地址 |
东四环中路189号百盛北门 |
|||
location |
经纬度 |
格式:X,Y |
|||
distance |
离中心点距离 |
单位:米 必须说明, 此结果仅在周边搜索的时候有值 |
|||
tel |
该POI的电话 |
||||
postcode |
邮编 |
extensions=all的时候显示 |
|||
website |
该POI的网址 |
extensions=all的时候显示 |
|||
|
该POI的电子邮箱 |
extensions=all的时候显示 |
|||
pcode |
poi所在省份编码 |
extensions=all的时候显示 |
|||
pname |
poi所在省份名称 |
若是直辖市的时候,此处直接显示市名,例如北京市 |
|||
citycode |
城市编码 |
extensions=all的时候显示 |
|||
cityname |
城市名 |
若是直辖市的时候,此处直接显示市名,例如北京市 |
|||
adcode |
区域编码 |
extensions=all的时候显示 |
|||
adname |
区域名称 |
区县级别的返回,例如朝阳区 |
|||
entr_location |
入口经纬度 |
extensions=all的时候显示 |
|||
exit_location |
出口经纬度 |
extensions=all的时候显示 |
|||
navi_poiid |
地图编号 |
extensions=all的时候显示 |
|||
gridcode |
地理格ID |
extensions=all的时候显示 |
|||
alias |
别名 |
extensions=all的时候显示 |
|||
business_area |
所在商圈 |
extensions=all的时候显示 |
|||
parking_type |
停车场类型 |
仅在停车场类型POI的时候显示该字段 展示停车场类型,包括:地下、地面、路边 extensions=all的时候显示 |
|||
tag |
该POI的特色内容 |
主要出现在POI为美食类的POI之中出现,此时代表特色菜 例如“烤鱼,麻辣香锅,老干妈回锅肉”
在其余POI类别的时候,会有小概率出现,此时代表此POI的特色内容 例如北京-第五季花艺 之中的“岁月静好,定情,如意花卡,圣诞之爱”
仅在extensions=all |
|||
indoor_map |
是否有室内地图标志 |
1,表示有室内相关数据 0,代表没有室内相关数据 extensions=all的时候显示 |
|||
indoor_data |
室内地图相关数据 |
当indoor_map=0时,字段为空 extensions=all的时候显示 |
|||
cpid |
当前POI的父级POI |
如果当前POI为建筑物类POI,则cpid为自身POI ID;如果当前POI为商铺类POI,则cpid为其所在建筑物的POI ID |
|||
floor |
楼层索引 |
一般会用数字表示,例如8 |
|||
truefloor |
所在楼层 |
一般会带有字母,例如F8 |
|||
groupbuy_num |
团购数据 |
此字段逐渐废弃 |
|||
business_area |
所属商圈 |
extensions=all的时候显示 |
|||
discount_num |
优惠信息数目 |
此字段逐渐废弃 |
|||
biz_ext |
深度信息 |
extensions=all的时候显示 |
|||
rating |
评分 |
仅存在于餐饮、酒店、景点、影院类POI之下 |
|||
cost |
人均消费 |
仅存在于餐饮、酒店、景点、影院类POI之下 |
|||
meal_ordering |
是否可订餐 |
仅存在于餐饮相关POI之下(此字段逐渐废弃) |
|||
seat_ordering |
是否可选座 |
仅存在于影院相关POI之下(此字段逐渐废弃) |
|||
ticket_ordering |
是否可订票 |
仅存在于景点相关POI之下(此字段逐渐废弃) |
|||
hotel_ordering |
是否可以订房 |
仅存在于酒店相关POI之下(此字段逐渐废弃) |
|||
photos |
照片相关信息 |
extensions=all的时候显示 |
|||
titile |
图片介绍 |
||||
url |
具体链接 |
弊端:
调用次数有限制,只有2000次免费调用次数,可以购买次数
第二种:关键字搜索
通过用POI的关键字进行条件搜索,例如:肯德基、朝阳公园等;同时支持设置POI类型搜索,例如:银行查询城市
可选值:城市中文、中文全拼、citycode、adcode
如:北京/beijing/010/110000
填入此参数后,会尽量优先返回此城市数据,但是不一定仅局限此城市结果,若仅需要某个城市数据请调用citylimit参数。
如:在深圳市搜天安门,返回北京天安门结果。
规则:只支持单个关键词语搜索关键词支持:行政区名称、citycode、adcode
例如,在subdistrict=2,搜索省份(例如山东),能够显示市(例如济南),区(例如历下区)
例子:
https://restapi.amap.com/v3/place/text?keywords=&city=610115000000&offset=20&page=1&key=<自己的key>
部分数据存储:
这两个方法的实现大致相同,只是请求不同的URL地址