1

如何从谷歌 api 获得 lat , long ,我有一些代码可以完美运行,但有时它给了我们,即使我在印度,英国的价值观。

String surl = "http://mobilemaps.clients.google.com/glm/mmap";
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(surl);
httppost.setEntity(new MyCellIDRequestEntity(shortcid, lac));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
DataInputStream dis = new DataInputStream(entity.getContent());

// Read some prior data
dis.readShort();
dis.readByte();
// Read the error-code
int errorCode = dis.readInt();
System.err.println("Error Code iss::" + errorCode);
int api = myPrefs2.getInt("api", 0);
if (errorCode == 0) 
{
    lat = (double) dis.readInt() / 1000000D;
    lng = (double) dis.readInt() / 1000000D;
    System.err.println("lattitude::" + Double.toString(lng) + "::long::" + Double.toString(lat));
} else {
    // System.err.println("Wrong Error Code");
}
} catch (Exception e) {
}
4

2 回答 2

0

只需通过链接即可帮助您获取用户位置的完整地址。

于 2012-06-08T05:50:56.973 回答
0

试试这个 -

从 Activity 调用函数:

String location_name = getmylocation(latitude+","+longitude)

getMyLocation()方法将提供您的位置字符串 -

public String getmylocation(String value)
{           
      JSONObject json = JSONfunctions.getJSONfromURL("http://maps.googleapis.com/maps/api/geocode/json?latlng="+value+"&sensor=true");
      try{
        JSONArray  georesult = json.getJSONArray("results");
            JSONObject e = georesult.getJSONObject(0);

            String result = e.getString("address_components");
            JSONArray jArray1 = new JSONArray(result);
            JSONObject json_data=jArray1.getJSONObject(3);

            loc = json_data.getString("long_name");

      }catch(JSONException e)
      {
        e.printStackTrace();
      }    
    return loc;
}   

JSONfunctions.java

package com.sample.getcurrentlocation;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONException;
import org.json.JSONObject;

import android.util.Log;

public class JSONfunctions {

    public static JSONObject getJSONfromURL(String url){
        InputStream is = null;
        String result = "";
        JSONObject jArray = null;

        //http post
        try{
                HttpClient httpclient = new DefaultHttpClient();
                HttpPost httppost = new HttpPost(url);
                HttpResponse response = httpclient.execute(httppost);
                HttpEntity entity = response.getEntity();
                is = entity.getContent();

        }catch(Exception e){
                Log.e("log_tag", "Error in http connection "+e.toString());
        }

      //convert response to string
        try{
                BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
                StringBuilder sb = new StringBuilder();
                String line = null;
                while ((line = reader.readLine()) != null) {
                        sb.append(line + "\n");
                }
                is.close();
                result=sb.toString();
        }catch(Exception e){
                Log.e("log_tag", "Error converting result "+e.toString());
        }

        try{

            jArray = new JSONObject(result);            
        }catch(JSONException e){
                Log.e("log_tag", "Error parsing data "+e.toString());
        }

        return jArray;
    }
}

您可以使用String location_nameAnd 简单地查看位置,不要忘记添加所需的权限 -

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
于 2012-06-08T06:35:16.460 回答