extends:http://blog.csdn.net/h7870181/article/details/12505883java
Google Maps API 網絡服務 git
官網地址 :web
https://developers.google.com/maps/documentation/webservices/?hl=zh-cnapache
其實就是一些接口,供咱們調用,如:json
一、根據地址獲取經緯度api
http://maps.google.com/maps/api/geocode/json?address=北京&language=zh-CN&sensor=false網絡
二、計算路線數據app
http://maps.googleapis.com/maps/api/directions/json?origin=北京&destination=上海&sensor=false&mode=drivingide
三、根據經緯度獲取詳細地址工具
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");
根據地址獲取經緯度