2012-05-01 10 views
0

ジオコーディングAPIから緯度と経度の位置を取得したいと考えています。私はそれのために次のコードを書いた。GeoコーディングAPIからlatとlangを取得しますか?

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. 
    }   
} 

正しいですか? URLから緯度と経度の値を取得するために、JSONを上記のコードに組み込むにはどうすればよいですか?

答えて

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"); 
    } 
} 

を試してみて、

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

とするために、インターネットのためにAndroidManifestに権限を追加する必要があります次回は質問をする前に宿題をやります。これがあなたのお役に立てば幸いです。

+0

私は試してみると助けてくれてありがとう – user1365148

-1

ActivityのonCreate()でStartActivity()メソッドを開始しますか?あなたは

HttpClient を使用してHTTP要求のために行くと、それ

+0

そのURLから私は緯度と緯度の位置を取得したいですか? – user1365148

+0

私はsqlliteデータベースに投稿できますか? – user1365148

+0

Intentを呼び出すとStartActivityがアクティビティを開始し、Uriをインテントで使用すると、既定のブラウザが呼び出されてURIが開きます。 –

関連する問題