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&region=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 网络服务用于网络定位、计算路线、获取经纬度、获取详细地址等的更多相关文章

  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. 设计模式之初识IoC/DI(六)

    本篇和大家一起学习IoC和DI即控制反转和依赖注入. 当然听上去这词语非常的专业,真不知道是怎么组出来的,看上去难归看上去难,但稍微理解一下也就这么回事了. 首先我们要明白IoC/DI干嘛用的,不然别 ...

  2. C++ 使用vector时遇到的一个问题

    我在测试程序中定义一个存储三维点的结构体,并定义该结构体的vector,当我在向vector插入元素时,编译一直提示错误: 代码片段如下:  C++ Code  1234567891011121314 ...

  3. JavaScript实现最简单的拖拽效果

    一.一些无关痛痒的唠叨 拖拽还是挺不错的一个页面效果,我个人认为,其生命力在于可以让用户自己做一些操作,所谓自定义.例如: ①浏览器标签顺序的拖拽切换 现在基本上所有的选项卡式的浏览器都有顺序拖拽切换 ...

  4. linux proc目录介绍

    https://www.cnblogs.com/DswCnblog/p/5780389.html

  5. [mysql] Incorrect string value: '\xE4\xBC\x9A\xE5\x91\x98' for column 'name' at row 1

    数据库字符集错误, 修改为UTF8/utf8mb4字符集即可.

  6. MySQL --- 计算指定日期为当月的第几周

    SET @d=NOW(); ; 啦啦啦

  7. 处理特殊格式的GET传参

    有群友问 这样的传参格式如何接受获取 xx.php?con="one"=>5,"two"=>0,"three"=>1 那么 ...

  8. WPF导航总结

    使用导航的目的是从一个页面进入到另一个页面.无论是预先决定的线性顺序(向导)还是基于层次的用户驱动程序(大部分网站的形式),或者动态生成的路径,主要有3种方法实现:调用Navigate方法,使用Hyp ...

  9. flask livereload用法

    #coding=utf-8 from flask import Flask from flask_script import Manager app = Flask(__name__) manager ...

  10. oracle数据据 Python+Pandas 获取Oracle数据库并加入DataFrame

    import pandas as pd import sys import imp imp.reload(sys) from sqlalchemy import create_engine impor ...