2012-05-01 47 views
0

我想从地理编码API获取纬度和经度位置。我为此写了下面的代码。从Geo编码API获取纬度和经度?

package com.appulento.mapsexample.pack; 
import android.graphics.Point; 
import android.location.Address; 
import android.location.Geocoder; 
import android.location.Location; 
import android.location.LocationListener; 
import android.location.LocationManager; 
import android.net.Uri; 
import android.os.Bundle; 
import android.os.Handler; 
import android.view.MotionEvent; 
import android.view.View; 
import com.google.android.maps.MapActivity; 
import com.google.android.maps.MapController; 
import com.google.android.maps.MapView; 
import com.google.android.maps.Overlay; 
import com.google.android.maps.Projection; 
import com.mapsinfo.pack.DBAdapter; 

public class MapsMianClass extends MapActivity { 

    private MapController mapController; 
    private LocationManager locationManager; 
    private MapView mapView; 
    List<Overlay> listOfOverlays ; 
    private List mapOverlays; 
    private Projection projection; 
    private Geocoder geoCoder; 
    private MapController mc; 
    private GeoPoint gP; 
    private DBAdapter db; 

    /** Called when the activity is first created. */ 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     //here i am giving the Maps Geo coding API URL  

     Intent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse("http://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=true_or_false")); 
     startActivity(intent); 
     //starting the Intent 
    } 

    @Override 
    protected boolean isRouteDisplayed() { 
     // TODO Auto-generated method stub 
     return false; 
    //default method of maps Activity. 
    }   
} 

它正确吗?如何在上面的代码中包含JSON以获取来自URL的纬度和经度值?

回答

0

响应试试这个代码

import android.app.Activity; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import org.apache.http.HttpResponse; 
import org.apache.http.client.HttpClient; 
import org.apache.http.client.methods.HttpGet; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.json.JSONArray; 
import org.json.JSONObject; 

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.net.URI; 

public class MyActivity extends Activity { 
    /** 
    * Called when the activity is first created. 
    */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 


     AsyncTask<String, Void, Void> stringVoidVoidAsyncTask = new AsyncTask<String, Void, Void>() { 

      BufferedReader in; 

      @Override 
      protected Void doInBackground(String... strings) { 

       String url = ""; 
       if (strings.length > 0) { 
        url = strings[0]; 
       } else { 
        return null; 
       } 
       try { 
        HttpClient httpClient = new DefaultHttpClient();// Client 
        HttpGet getRequest = new HttpGet(); 

        getRequest.setURI(new URI(url)); 
        HttpResponse response = httpClient.execute(getRequest); 


        in = new BufferedReader 
          (new InputStreamReader(response.getEntity().getContent())); 
        StringBuffer sb = new StringBuffer(""); 
        String line = ""; 
        String NL = System.getProperty("line.separator"); 
        while ((line = in.readLine()) != null) { 
         sb.append(line + NL); 
        } 
        in.close(); 
        String page = sb.toString(); 
        JSONObject jsonObject = new JSONObject(page); 
        JSONArray jsonArray = (JSONArray) jsonObject.get("results"); 
        if (jsonArray.length() > 0) { 
         jsonObject = (JSONObject) jsonArray.get(0); 
         jsonObject = (JSONObject) jsonObject.get("geometry"); 
         JSONObject location = (JSONObject) jsonObject.get("location"); 
         Double lat = (Double) location.get("lat"); 
         Double lng = (Double) location.get("lng"); 
         System.out.println("lat - " + lat + " , lon - " + lng); 
        } 
        System.out.println(page); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } finally { 
        if (in != null) { 
         try { 
          in.close(); 
         } catch (IOException e) { 
          e.printStackTrace(); 
         } 
        } 
       } 
       return null; 
      } 
     }; 
     stringVoidVoidAsyncTask.execute("http://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=true"); 
    } 
} 

,做在AndroidManifest为互联网添加权限

<uses-permission android:name="android.permission.INTERNET"/> 

而对于下次在提问之前先做功课首先要做googleing。希望这对你有所帮助。

+0

感谢您的帮助,我会尽力 – user1365148

-1

你想在Activity的onCreate()的StartActivity()方法中启动什么?

你应该使用HttpClient 去http请求并解析其

+0

从那个URL我想获得拉特和朗位置? – user1365148

+0

,以便我可以引入sqllite数据库? – user1365148

+0

具有意图的调用和StartActivity将启动一个活动,并且Uri意图将调用您的默认浏览器来打开该URI。 –