文档章节

Google Map 开发(一):中获取兴趣点 (POI) 信息

范特彪西
 范特彪西
发布于 2018/07/20 19:42
字数 717
阅读 2.6K
收藏 0

首先来说,Google Map 的集成其实非常简单,如果使用了 Google Play Service 了可能就几行代码调用的事,不过在我集成的过程中,发现虽然基于 Service SDK 的集成虽然简单,但是功能少了很多,比如基于 POI 信息获取的方法函数中,就没有传递半径区域的方法,这就需要使用到 Places API Web Service 了。

打开官方文档主页,就已经是 POI 应用的一个实例了。

可以看到需要传递的参数包括当前坐标,搜索区域半径,POI 类型,关键字等,以及需要申请一个 APP KEY,这个很简单,在开发者控制台申请好就行。

设计到 WebAPI 的调用,在 Android 上有很多可选的网络请求方案,上 Github 搜索 HTTP,然后按照 Start 倒序一排,这就是我说的面向 Github 编程。

我们选择 Retrofit 这个就行了,OkHttp 可以不用看了,不是说它不好,只是封装的还不够友好,Retrofit 是把 OkHttp 和 RxJava 糅到一起,使 OkHttp 更为丝滑。在这之前我一直是用 android-async-http,这个 Http 库也是非常强大。

对于任何 Http 框架,由于我们最终返回的是 Json,所以需要实体类,当然面对这一堆 Json 我们没必要自己去写实体类,网上已经有很多 Json 转 Javabean 的工具了。

在项目中集成 Retrofit 非常简单:

 implementation 'com.squareup.retrofit2:retrofit:2.4.0'

然后把生成的 Bean 导入项目,并编写 API 调用接口:

public interface GoogleMapApi {

    @GET("/maps/api/place/nearbysearch/json")
    Call<GooglePoiBean> listRepos(@Query("location") String location,
                                  @Query("radius") int radius,
                                  @Query("types") String types,
                                  @Query("name") String name,
                                  @Query("key") String key);

}

然后创建一个服务主调用类,因为如果接口多了,还可以方便统一管理。

public class GoogleAPIService {

    private static final String GOOGLE_SERVICE_API_KEY  = "AIzaSyBP6nc-FJl7xZtZJP3dTXxeCNr7lWaM3yM";

    private Retrofit retrofit;

    public GoogleAPIService() {

        retrofit = new Retrofit.Builder()
                .baseUrl("https://maps.googleapis.com/")
                .build();

    }

    public void getPoi(double lat, double lng, int radius, String type, Callback<GooglePoiBean> callback) {

        GoogleMapApi googleMapApi = retrofit.create(GoogleMapApi.class);
        Call<GooglePoiBean> googlePoiBeanCall = googleMapApi.listRepos(lat + "," + lng, radius, type, "", GOOGLE_SERVICE_API_KEY);
        googlePoiBeanCall.enqueue(callback);

    }
}

调用非常简单,调用如下:

 GoogleAPIService googleAPIService = new GoogleAPIService();
 googleAPIService.getPoi(30.223, 114.232, 20000, "酒店", new Callback<GooglePoiBean>() {
     @Override
     public void onResponse(Call<GooglePoiBean> call, Response<GooglePoiBean> response) {
     }
     @Override
     public void onFailure(Call<GooglePoiBean> call, Throwable t) {
     }
 });

至此,就已经实现了 Google Map WebService API 的 POI 功能集成了,就算没有 Play Service ,这个功能还是能正常使用的,前提是能访问 Google Map 服务了,不过,国内好像都不能访问的,我也不太清楚什么原因,如果你知道,可以告诉我 。→_→

© 著作权归作者所有

范特彪西
粉丝 15
博文 4
码字总数 3717
作品 0
杭州
程序员
私信 提问
加载中

评论(0)

POI兴趣点搜索 - 地理信息系统(6)

(2017-08-13 银河统计) POI(Point of Interest),中文可以翻译为“兴趣点”,兴趣点(POI)是地理信息系统中的一个术语,泛指一切可以抽象为点的地理对象,尤其是一些与人们生活密切相关的...

银河统计
2017/08/13
0
0
百度地图资源下载备注

http://developer.baidu.com/map/devRes.htm 相关下载 名称 说明 下载 百度地图城市名称-中心点经纬度(cityCenter)关系对照 您可以通过此文件获知百度地图的全国各城市中心点(cityCenter)...

宝塔镇河妖
2016/09/04
178
0
Android使用ApachePOI组件读写Worddoc和docx文件【doc总结不错】

最近在项目中要生成Word的doc和docx文件,一番百度google之后,发现通过java语言实现的主流是Apache的POI组件。除了POI,这里还有另一种实现,不过我没有去研究,有兴趣的同学可以研究研究。...

Airship
2019/03/13
131
0
第四节:Geo类型介绍以及Redis批量操作、事务、分布式锁

一. Geo类型 1. 类型说明   Geo 是 Redis 3.2 版本后新增的数据类型,用来保存兴趣点(POI,point of interest)的坐标信息。可以实现计算两 POI 之间的距离、获取一个点周边指定距离的 PO...

Yaopengfei
2019/11/28
0
0
关于使用百度地图的总结

在项目中大量地使用到了百度地图,因此对百度地图SDK的使用很熟悉,对百度地图SDK有比较深的理解。 现将关于百度地图的几点说明如下: 一、地图的显示和地图类型等等(包括一些可能在实际项目...

雪狼的开发故事
2015/12/20
156
0

没有更多内容

加载失败,请刷新页面

加载更多

随机梯度下降

本文首发自公众号:RAIS,点击直接关注。 前言 本系列文章为 《Deep Learning》 读书笔记,可以参看原书一起阅读,效果更佳。 梯度下降算法 在机器学习或深度学习中,模型的训练在一般都会被...

我是任玉琢
7分钟前
15
0
Navicat for MySQL下载安装和破解教程

1.进https://navicatformysql.en.softonic.com/官网 2.第二步 3.第三步等待下载完成 4.第四步双击 二,破解 1.链接:https://pan.baidu.com/s/1CjV7JVzi7pVqlxKMQ3S8wg 密码:hk59 下载后解压...

osc_zgt6zhsy
7分钟前
5
0
Modbus协议和应用开发介绍

因业务需要了解Modbus协议的使用,因此对Modbus的协议,以及相应的C#处理应用进行了解,针对协议的几种方式(RTU、ASCII、TCPIP)进行了封装,以及对Modbus的各种功能码的特点进行了详细的了...

osc_9yulefcq
9分钟前
9
0
golang设置代理

golang.org打不开,设置一下代理. 打开 MODULE: set GO111MODULE=on //windowsexport GO111MODULE=on //linux 设置代理: // set GOPROXY=https://proxy.golang.orgset GOPROXY=https://mi......

漫步海边小路
9分钟前
5
0
01.ElasticSearch (RestFul Api 基本操作)

创建操作 创建索引(库) #number_of_shards 设置分片#number_of_replicas 设置备份PUT 索引{ "settings": { "number_of_shards": 1, "number_of_replicas": 0 }} 创建映射类......

Pole丶逐
10分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部