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

等等还有很多,大家可以自己去找找

给大家介绍一下如果利用这些接口

实现网络定位:

首先获取经纬度

  1. /**
  2. * 获取本地
  3. * @param context
  4. * @return
  5. */
  6. public String getLocation(Context context){
  7. LocationManager lm = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
  8. // 返回所有已知的位置提供者的名称列表,包括未获准访问或调用活动目前已停用的。
  9. //List<String> lp = lm.getAllProviders();
  10. Criteria criteria = new Criteria();
  11. criteria.setCostAllowed(false);
  12. //设置位置服务免费
  13. criteria.setAccuracy(Criteria.ACCURACY_COARSE); //设置水平位置精度
  14. //getBestProvider 只有允许访问调用活动的位置供应商将被返回
  15. String providerName = lm.getBestProvider(criteria, true);
  16.  
  17. if (providerName != null)
  18. {
  19. Location location = lm.getLastKnownLocation(providerName);
  20. if(location!=null){
  21. //获取维度信息
  22. double latitude = location.getLatitude();
  23. //获取经度信息
  24. double longitude = location.getLongitude();
  25. return latitude+","+longitude;
  26. }
  27. }
  28. return "";
  29. }

调用API,我这里写了一个工具类

  1. package com.techrare.utils;
  2.  
  3. import java.io.IOException;
  4. import java.io.UnsupportedEncodingException;
  5. import java.util.ArrayList;
  6. import java.util.List;
  7. import java.util.Map;
  8.  
  9. import org.apache.http.HttpResponse;
  10. import org.apache.http.NameValuePair;
  11. import org.apache.http.ParseException;
  12. import org.apache.http.client.ClientProtocolException;
  13. import org.apache.http.client.HttpClient;
  14. import org.apache.http.client.entity.UrlEncodedFormEntity;
  15. import org.apache.http.client.methods.HttpPost;
  16. import org.apache.http.impl.client.DefaultHttpClient;
  17. import org.apache.http.message.BasicNameValuePair;
  18. import org.apache.http.protocol.HTTP;
  19. import org.apache.http.util.EntityUtils;
  20.  
  21. public class MapsApiUtils {
  22. private static MapsApiUtils mapsApiUtils = new MapsApiUtils();
  23.  
  24. /**
  25. * 单例模式
  26. *
  27. * @return
  28. */
  29. synchronized public static MapsApiUtils getInstance() {
  30. return mapsApiUtils;
  31. }
  32.  
  33. /**
  34. * 根据API地址和参数获取响应对象HttpResponse
  35. *
  36. * @param params
  37. * @param url
  38. * @return
  39. */
  40. private HttpResponse post(Map<String, Object> params, String url) {
  41.  
  42. HttpClient client = new DefaultHttpClient();
  43. HttpPost httpPost = new HttpPost(url);
  44. httpPost.addHeader("charset", HTTP.UTF_8);
  45. httpPost.setHeader("Content-Type","application/x-www-form-urlencoded; charset=utf-8");
  46. HttpResponse response = null;
  47. if (params != null && params.size() > 0) {
  48. List<NameValuePair> nameValuepairs = new ArrayList<NameValuePair>();
  49. for (String key : params.keySet()) {
  50. nameValuepairs.add(new BasicNameValuePair(key, (String) params.get(key)));
  51. }
  52. try {
  53. httpPost.setEntity(new UrlEncodedFormEntity(nameValuepairs,HTTP.UTF_8));
  54. response = client.execute(httpPost);
  55. } catch (UnsupportedEncodingException e) {
  56. e.printStackTrace();
  57. } catch (ClientProtocolException e) {
  58. e.printStackTrace();
  59. } catch (IOException e) {
  60. e.printStackTrace();
  61. } catch (RuntimeException e) {
  62. e.printStackTrace();
  63. }
  64. } else {
  65. try {
  66. response = client.execute(httpPost);
  67. } catch (ClientProtocolException e) {
  68. e.printStackTrace();
  69. } catch (IOException e) {
  70. e.printStackTrace();
  71. }
  72. }
  73. return response;
  74. }
  75.  
  76. /**
  77. * 得到JSON值
  78. *
  79. * @param params
  80. * @param url
  81. * @return
  82. */
  83. private Object getValues(Map<String, Object> params, String url) {
  84. String token = "";
  85. HttpResponse response = post(params, url);
  86. if (response != null) {
  87. try {
  88. token = EntityUtils.toString(response.getEntity());
  89. response.removeHeaders("operator");
  90. } catch (ParseException e) {
  91. e.printStackTrace();
  92. } catch (IOException e) {
  93. e.printStackTrace();
  94. }
  95. }
  96. return token;
  97. }
  98.  
  99. /**
  100. * 根据google API 获取两地的路线
  101. * @param origin 起点
  102. * @param destination 终点
  103. * @param mode 出行方式 driving驾车, walking步行, bicycling自行车, transit公交车
  104. * @param sensor 是否来自装有位置传感器的设备 true Or false
  105. * @return
  106. */
  107. public Object getRoutes(String origin, String destination) {
  108. String url = "http://maps.googleapis.com/maps/api/directions/json?origin="+ origin +"&destination="+ destination +"&sensor=false&mode=driving&region=zh";
  109. return getValues(null, url);
  110. }
  111.  
  112. /**
  113. * 根据经纬度 获取地理位置
  114. * LatLng 经纬度以逗号隔开 纬度,经度
  115. * @return
  116. */
  117. public Object getAddress(String latlng) {
  118. String url = "http://maps.google.com/maps/api/geocode/json?latlng="+latlng+"&language=zh-CN&sensor=false";
  119. return getValues(null, url);
  120. }
  121.  
  122. /**
  123. * 根据地址获取经纬度
  124. * @return
  125. */
  126. public Object getLatlng(String str) {
  127. String url = "http://maps.google.com/maps/api/geocode/json?address="+ str+"&language=zh-CN&sensor=false";
  128. return getValues(null, url);
  129. }
  130. }

调用getAddress()方法 传递经纬度来获取详细地址 返回的是JSON字符串,大家解析一下就可以

可以得到起点到终点的时间和路程

调用getRoutes() 方法,传起点和终点

  1. MapsApiUtils.getInstance().getLatLng("39.90403,116.407526");

根据地址获取经纬度

 

Android Google Maps API 网络服务用于网络定位、计算路线、获取经纬度、获取详细地址等的更多相关文章

  1. Google Maps API V3 之 路线服务

    Google官方教程: Google 地图 API V3 使用入门 Google 地图 API V3 针对移动设备进行开发 Google 地图 API V3 之事件 Google 地图 API V3 ...

  2. Google Maps API V3 之 图层

    Google官方教程: Google 地图 API V3 使用入门 Google 地图 API V3 针对移动设备进行开发 Google 地图 API V3 之事件 Google 地图 API V3 ...

  3. Google Maps API Web Services

    原文:Google Maps API Web Services 摘自:https://developers.google.com/maps/documentation/webservices/ Goo ...

  4. Google Maps API V3 之绘图库 信息窗口

    Google官方教程: Google 地图 API V3 使用入门 Google 地图 API V3 针对移动设备进行开发 Google 地图 API V3 之事件 Google 地图 API V3 ...

  5. Google Maps API 将开始收费

    Google Maps API 将开始收费 一.总结 一句话总结:国外的话openstreetmap或许不错 国内的话就高德吧 二.Google Maps API 将开始收费 曾经免费的 Google ...

  6. Google Maps API v2密钥申请

    1. 进入到Google APIs Console页面 https://code.google.com/apis/console/ 点击左边导航栏的Seivices进入 在All services 的 ...

  7. Android Google Maps 开始

    由于工作需要,最近对Android的各大地图进行了试用. 其中有Google地图,百度地图,高德地图,还有开源的OSM. 在使用Google地图的时候,官网流程写的非常清楚,但是其中也遇到一些问题.这 ...

  8. google maps api申请的问题

    现在已经改由统一的GOOGLE API控制台进行所有GOOGLE API的管理了. 方法是使用Google帐号登入 https://code.google.com/apis/console. 然后在所 ...

  9. Google maps API开发(一)(转)

    一.加载Google maps API <script type="text/javascript" src="http://ditu.google.com/map ...

随机推荐

  1. Redis Crackit漏洞利用和防护

    注意:本文只是阐述该漏洞的利用方式和如何预防.根据职业道德和<中华人民共和国计算机信息系统安全保护条例>,如果发现的别人的漏洞,千万不要轻易入侵,这个是明确的违法的哦!!! 目前Redis ...

  2. jsp+springmvc实现文件上传、图片上传和及时预览图片

    1.多文件上传:http://blog.csdn.net/a1314517love/article/details/24183273 2.单文件上传的简单示例:http://blog.csdn.net ...

  3. Servlet3简介

    servlet基础知识:http://blog.csdn.net/chjttony/article/details/6086292 ServletContext相关知识:http://blog.csd ...

  4. Ckeditor的JS的加载和取值和赋值方法

    Ckeditor 就是原来的Fckeditor. JS加载: $(function() { CKEDITOR.replace('FContent'); //FContent:这个对应文本域 }); J ...

  5. mysql数据库2

    命令行客户端软件MySQL Command Line Client, 打开该程序,输入数据库密码,登陆到MySQL软件, 如果想通过该命令行工具来操作MySQL软件,只需要在"mysql&g ...

  6. Linux静态库生成

    Linux上的静态库,其实是目标文件的归档文件. 在Linux上创建静态库的步骤如下: 写源文件,通过 gcc -c xxx.c 生成目标文件. 用 ar 归档目标文件,生成静态库. 配合静态库,写一 ...

  7. JAVA自定义注解 和 运行时靠 反射获取注解,解决 shiro 注解型权限因子获取问题

    项目的权限分配,采用的是RBAC的设计模式.后台配置权限的时候,需要获取到所有的权限因子. 不经让我想起YII框架的SRBAC模块,还有以前的一个ecshop改造系统的权限配置方式,都采用的是PHP的 ...

  8. ios8 UITableView设置 setSeparatorInset:UIEdgeInsetsZero不起作用的解决办法

    在ios7中,UITableViewCell左侧会有默认15像素的空白.这时候,设置setSeparatorInset:UIEdgeInsetsZero 能将空白去掉. 但是在ios8中,设置setS ...

  9. Cocos2dx3.0 TextField 输入中文的问题

    一开始无法输入中文, 显示出来的是乱码, 修改一个函数, 下面是修改过后的代码 void GLView::onGLFWCharCallback(GLFWwindow *window, unsigned ...

  10. 服务端测试之接口测试工具——postman

    今天跟大家分享一个非常常见大家也非常熟悉的测试工具——postman. 1.安装postman postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件.打开chrome浏览器, ...