高德完美获取地理位置信息并显示出来~~

来源:互联网 发布:代理商授权书源码系统 编辑:程序博客网 时间:2024/05/16 00:28

// 获取地理位置
 private LocationManagerProxy locationManager = null;
 private static final long mLocationUpdateMinTime = 1000;
 private static final float mLocationUpdateMinDistance = 10.0f;
 private LocationHandler locationhandler;
 private String strdata;
 // 纬度
 private Double geoLat;
 // 经度
 private Double geoLng;

 

locationManager = new LocationManagerProxy(
      SendWbActivity.this,getResources().getString(R.string.map_api));

locationhandler = new LocationHandler();
    Thread locationThread = new LocationThread();
    locationThread.start();

 

class LocationThread extends Thread
 {

  @Override
  public void run()
  {
   // TODO Auto-generated method stub
   super.run();
   Looper.prepare();
   // locationManager = new LocationManagerProxy(SendWbActivity.this,
   // getResources().getString(R.string.map_api));
   // TODO Auto-generated method stub
   for (final String provider : locationManager.getProviders(true))
   {
    Log.i(TAG, "开启异步线程获取地理位置!");
    if (LocationManagerProxy.GPS_PROVIDER.equals(provider)
      || LocationProviderProxy.MapABCNetwork.equals(provider))
    {
     Log.i(TAG, "开启线程~~~");
     locationManager.requestLocationUpdates(provider,
       mLocationUpdateMinTime, mLocationUpdateMinDistance,
       locationListener);
    }
   }
   Looper.loop();
  }

 }

 LocationListener locationListener = new LocationListener()
 {

  @Override
  public void onProviderDisabled(String provider)
  {
  }

  @Override
  public void onProviderEnabled(String provider)
  {
  }

  @Override
  public void onStatusChanged(String provider, int status, Bundle extras)
  {
  }

  @Override
  public void onLocationChanged(Location location)
  {
   // TODO Auto-generated method stub

   // TODO Auto-generated method stub
   if (location != null)
   {

    geoLat = location.getLatitude();
    geoLng = location.getLongitude();
    // 经度:longitude 纬度:latitude
    /*
     * lnglat 经纬度值,采用经度在前,纬度在后,经纬度值之间用“,”隔开的方式
     * 如:113.94830703735352,22.54046422124227 reqsrc 请求来源,请填写"wb”
     */
    Log.i(TAG, "开始获取地理位置~~");
    String result = null;
    String lnglat = geoLng + "," + geoLat;
    Map<String, String> map = new HashMap<String, String>();
    map.put("lnglat", lnglat);
    map.put("reqsrc", "wb");

    String signUrl = UrlUtil.buildUrlByQueryStringMapAndBaseUrl(
      Constants.MAP_RGEOC, map);
    HttpGet httpGet = new HttpGet(signUrl);
    HttpResponse httpResponse = null;
    HttpClient httpClient = new DefaultHttpClient();
    try
    {
     httpResponse = httpClient.execute(httpGet);
     result = EntityUtils.toString(httpResponse.getEntity(),
       "GB2312");
     JSONObject dataObj = new JSONObject(result)
       .getJSONObject("detail");
     JSONArray array = dataObj.getJSONArray("poilist");
     for (int i = 0; i < array.length(); i++)
     {

      System.out.println("array:" + array.getString(i));
     }
     JSONObject data = array.getJSONObject(1);
     strdata = data.getString("addr");
     System.out.println("Str:" + strdata);

     Log.i(TAG, "地理位置为:" + strdata);

     Toast.makeText(SendWbActivity.this, strdata,
       Toast.LENGTH_LONG).show();

     Message msg = locationhandler.obtainMessage();
     locationhandler.sendMessage(msg);
    } catch (Exception e)
    {
     e.printStackTrace();
    }
    System.out.println("地址位置:" + result);
   }

  }

 };

 class LocationHandler extends Handler
 {
  @Override
  public void handleMessage(Message msg)
  {
   // TODO Auto-generated method stub
   super.handleMessage(msg);

   location_image.setVisibility(View.VISIBLE);
   location_progressBar.setVisibility(View.GONE);
   location_text.setText(strdata);
   locationManager.removeUpdates(locationListener);

  }

 }

 

R.string.map_api在高德官方申请的授权码,http://code.mapabc.com/在这里申请~~~

或得经纬度后,将经纬度上传到腾讯地图,返回JSON数据,解析就OK了~~~

 

原创粉丝点击