Android Google Maps API 网络服务用于网络定位、计算路线、获取经纬度、获取详细地址等
extends:http://blog.csdn.net/h7870181/article/details/12505883
Google Maps API 网络服务
官网地址 :
https://developers.google.com/maps/documentation/webservices/?hl=zh-cn
其实就是一些接口,供我们调用,如:
1、根据地址获取经纬度
http://maps.google.com/maps/api/geocode/json?address=北京&language=zh-CN&sensor=false
2、计算路线数据
http://maps.googleapis.com/maps/api/directions/json?origin=北京&destination=上海&sensor=false&mode=driving
3、根据经纬度获取详细地址
http://maps.google.com/maps/api/geocode/json?latlng="latlng"&language=zh-CN&sensor=false
等等还有很多,大家可以自己去找找
给大家介绍一下如果利用这些接口
实现网络定位:
首先获取经纬度
- /**
- * 获取本地
- * @param context
- * @return
- */
- public String getLocation(Context context){
- LocationManager lm = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
- // 返回所有已知的位置提供者的名称列表,包括未获准访问或调用活动目前已停用的。
- //List<String> lp = lm.getAllProviders();
- Criteria criteria = new Criteria();
- criteria.setCostAllowed(false);
- //设置位置服务免费
- criteria.setAccuracy(Criteria.ACCURACY_COARSE); //设置水平位置精度
- //getBestProvider 只有允许访问调用活动的位置供应商将被返回
- String providerName = lm.getBestProvider(criteria, true);
- if (providerName != null)
- {
- Location location = lm.getLastKnownLocation(providerName);
- if(location!=null){
- //获取维度信息
- double latitude = location.getLatitude();
- //获取经度信息
- double longitude = location.getLongitude();
- return latitude+","+longitude;
- }
- }
- return "";
- }
调用API,我这里写了一个工具类
- package com.techrare.utils;
- import java.io.IOException;
- import java.io.UnsupportedEncodingException;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.Map;
- import org.apache.http.HttpResponse;
- import org.apache.http.NameValuePair;
- import org.apache.http.ParseException;
- import org.apache.http.client.ClientProtocolException;
- import org.apache.http.client.HttpClient;
- import org.apache.http.client.entity.UrlEncodedFormEntity;
- import org.apache.http.client.methods.HttpPost;
- import org.apache.http.impl.client.DefaultHttpClient;
- import org.apache.http.message.BasicNameValuePair;
- import org.apache.http.protocol.HTTP;
- import org.apache.http.util.EntityUtils;
- public class MapsApiUtils {
- private static MapsApiUtils mapsApiUtils = new MapsApiUtils();
- /**
- * 单例模式
- *
- * @return
- */
- synchronized public static MapsApiUtils getInstance() {
- return mapsApiUtils;
- }
- /**
- * 根据API地址和参数获取响应对象HttpResponse
- *
- * @param params
- * @param url
- * @return
- */
- private HttpResponse post(Map<String, Object> params, String url) {
- HttpClient client = new DefaultHttpClient();
- HttpPost httpPost = new HttpPost(url);
- httpPost.addHeader("charset", HTTP.UTF_8);
- httpPost.setHeader("Content-Type","application/x-www-form-urlencoded; charset=utf-8");
- HttpResponse response = null;
- if (params != null && params.size() > 0) {
- List<NameValuePair> nameValuepairs = new ArrayList<NameValuePair>();
- for (String key : params.keySet()) {
- nameValuepairs.add(new BasicNameValuePair(key, (String) params.get(key)));
- }
- try {
- httpPost.setEntity(new UrlEncodedFormEntity(nameValuepairs,HTTP.UTF_8));
- response = client.execute(httpPost);
- } catch (UnsupportedEncodingException e) {
- e.printStackTrace();
- } catch (ClientProtocolException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- } catch (RuntimeException e) {
- e.printStackTrace();
- }
- } else {
- try {
- response = client.execute(httpPost);
- } catch (ClientProtocolException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- return response;
- }
- /**
- * 得到JSON值
- *
- * @param params
- * @param url
- * @return
- */
- private Object getValues(Map<String, Object> params, String url) {
- String token = "";
- HttpResponse response = post(params, url);
- if (response != null) {
- try {
- token = EntityUtils.toString(response.getEntity());
- response.removeHeaders("operator");
- } catch (ParseException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- return token;
- }
- /**
- * 根据google API 获取两地的路线
- * @param origin 起点
- * @param destination 终点
- * @param mode 出行方式 driving驾车, walking步行, bicycling自行车, transit公交车
- * @param sensor 是否来自装有位置传感器的设备 true Or false
- * @return
- */
- public Object getRoutes(String origin, String destination) {
- String url = "http://maps.googleapis.com/maps/api/directions/json?origin="+ origin +"&destination="+ destination +"&sensor=false&mode=driving®ion=zh";
- return getValues(null, url);
- }
- /**
- * 根据经纬度 获取地理位置
- * LatLng 经纬度以逗号隔开 纬度,经度
- * @return
- */
- public Object getAddress(String latlng) {
- String url = "http://maps.google.com/maps/api/geocode/json?latlng="+latlng+"&language=zh-CN&sensor=false";
- return getValues(null, url);
- }
- /**
- * 根据地址获取经纬度
- * @return
- */
- public Object getLatlng(String str) {
- String url = "http://maps.google.com/maps/api/geocode/json?address="+ str+"&language=zh-CN&sensor=false";
- return getValues(null, url);
- }
- }
调用getAddress()方法 传递经纬度来获取详细地址 返回的是JSON字符串,大家解析一下就可以
可以得到起点到终点的时间和路程
调用getRoutes() 方法,传起点和终点
- MapsApiUtils.getInstance().getLatLng("39.90403,116.407526");
根据地址获取经纬度
Android Google Maps API 网络服务用于网络定位、计算路线、获取经纬度、获取详细地址等的更多相关文章
- Google Maps API V3 之 路线服务
Google官方教程: Google 地图 API V3 使用入门 Google 地图 API V3 针对移动设备进行开发 Google 地图 API V3 之事件 Google 地图 API V3 ...
- Google Maps API V3 之 图层
Google官方教程: Google 地图 API V3 使用入门 Google 地图 API V3 针对移动设备进行开发 Google 地图 API V3 之事件 Google 地图 API V3 ...
- Google Maps API Web Services
原文:Google Maps API Web Services 摘自:https://developers.google.com/maps/documentation/webservices/ Goo ...
- Google Maps API V3 之绘图库 信息窗口
Google官方教程: Google 地图 API V3 使用入门 Google 地图 API V3 针对移动设备进行开发 Google 地图 API V3 之事件 Google 地图 API V3 ...
- Google Maps API 将开始收费
Google Maps API 将开始收费 一.总结 一句话总结:国外的话openstreetmap或许不错 国内的话就高德吧 二.Google Maps API 将开始收费 曾经免费的 Google ...
- Google Maps API v2密钥申请
1. 进入到Google APIs Console页面 https://code.google.com/apis/console/ 点击左边导航栏的Seivices进入 在All services 的 ...
- Android Google Maps 开始
由于工作需要,最近对Android的各大地图进行了试用. 其中有Google地图,百度地图,高德地图,还有开源的OSM. 在使用Google地图的时候,官网流程写的非常清楚,但是其中也遇到一些问题.这 ...
- google maps api申请的问题
现在已经改由统一的GOOGLE API控制台进行所有GOOGLE API的管理了. 方法是使用Google帐号登入 https://code.google.com/apis/console. 然后在所 ...
- Google maps API开发(一)(转)
一.加载Google maps API <script type="text/javascript" src="http://ditu.google.com/map ...
随机推荐
- Redis Crackit漏洞利用和防护
注意:本文只是阐述该漏洞的利用方式和如何预防.根据职业道德和<中华人民共和国计算机信息系统安全保护条例>,如果发现的别人的漏洞,千万不要轻易入侵,这个是明确的违法的哦!!! 目前Redis ...
- jsp+springmvc实现文件上传、图片上传和及时预览图片
1.多文件上传:http://blog.csdn.net/a1314517love/article/details/24183273 2.单文件上传的简单示例:http://blog.csdn.net ...
- Servlet3简介
servlet基础知识:http://blog.csdn.net/chjttony/article/details/6086292 ServletContext相关知识:http://blog.csd ...
- Ckeditor的JS的加载和取值和赋值方法
Ckeditor 就是原来的Fckeditor. JS加载: $(function() { CKEDITOR.replace('FContent'); //FContent:这个对应文本域 }); J ...
- mysql数据库2
命令行客户端软件MySQL Command Line Client, 打开该程序,输入数据库密码,登陆到MySQL软件, 如果想通过该命令行工具来操作MySQL软件,只需要在"mysql&g ...
- Linux静态库生成
Linux上的静态库,其实是目标文件的归档文件. 在Linux上创建静态库的步骤如下: 写源文件,通过 gcc -c xxx.c 生成目标文件. 用 ar 归档目标文件,生成静态库. 配合静态库,写一 ...
- JAVA自定义注解 和 运行时靠 反射获取注解,解决 shiro 注解型权限因子获取问题
项目的权限分配,采用的是RBAC的设计模式.后台配置权限的时候,需要获取到所有的权限因子. 不经让我想起YII框架的SRBAC模块,还有以前的一个ecshop改造系统的权限配置方式,都采用的是PHP的 ...
- ios8 UITableView设置 setSeparatorInset:UIEdgeInsetsZero不起作用的解决办法
在ios7中,UITableViewCell左侧会有默认15像素的空白.这时候,设置setSeparatorInset:UIEdgeInsetsZero 能将空白去掉. 但是在ios8中,设置setS ...
- Cocos2dx3.0 TextField 输入中文的问题
一开始无法输入中文, 显示出来的是乱码, 修改一个函数, 下面是修改过后的代码 void GLView::onGLFWCharCallback(GLFWwindow *window, unsigned ...
- 服务端测试之接口测试工具——postman
今天跟大家分享一个非常常见大家也非常熟悉的测试工具——postman. 1.安装postman postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件.打开chrome浏览器, ...