0

我想从 Geo Coding 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 获取纬度和经度值?

4

2 回答 2

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 中为 Internet 添加权限

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

下次在提问之前先做功课,先用谷歌搜索。希望这对您有所帮助。

于 2012-05-01T16:51:59.623 回答
-1

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

您应该使用HttpClient进行 http 请求 并解析它的响应

于 2012-05-01T13:50:31.020 回答