Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android Google Maps API 網絡服務用於網絡定位、計算路線、獲取經緯度、獲取詳細地址等

Android Google Maps API 網絡服務用於網絡定位、計算路線、獲取經緯度、獲取詳細地址等

編輯:關於Android編程

實現網絡定位: 首先獲取經緯度 [java]   /**   * 獲取本地   * @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,我這裡寫了一個工具類 [java]   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字符串,大家解析一下就可以 [java]   MapsApiUtils.getInstance().getAddress(getLocation(context));     計算路線數據  可以得到起點到終點的時間和路程 調用getRoutes() 方法,傳起點和終點 [java]  MapsApiUtils.getInstance().getLatLng("39.90403,116.407526");     根據地址獲取經緯度 [java]  MapsApiUtils.getInstance().getRoutes("北京","上海");       還有很多大家可以到官網上看看,也很容易理解的。  
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved