2016-04-25 4 views
0

私は他のアクティビティにある住所(緯度、緯度ではない)のリストを持っています。これらのアドレスをIntentエクストラを介してMapActivityに渡して、それをジオコードする必要があります。これどうやってするの?以下はMapActivityにアドレスのArrayListを渡して、複数の場所をマップに表示します(アンドロイド)

私のリストビューの活動に

viewHolder.address.setText(row[4]);//Read from CSV file 
+0

アドレスをlat/lngに逆ジオコードする必要があります。そしてそれらをマーカーとして地図にプロットします。 Geocoderクラスを見てください。それのために – jaolstad

答えて

1

である私のアドレスデータがリストを使用して活動にデータを渡したり、アドレス

public void getLocationFromAddress(String strAddress){ 

    Geocoder coder = new Geocoder(this); 
    List<Address> address; 
    GeoPoint p1 = null; 

    try { 
     address = coder.getFromLocationName(strAddress,5); 
     if (address==null) { 
     return null; 
    } 
    Address location=address.get(0); 
    location.getLatitude(); 
    location.getLongitude(); 

    Log.i("TAG","Lat = "+location.getLatitude()) 
    Log.i("TAG","Long = "+location.getLongitude()) 
    } 
} 

から緯度長いを取得するには、次のコードをマップして使用していますこれを確認してくださいGeocoding Example

+0

タイ。しかし、どうすれば住所を渡すことができますか? – Critako

0
public class GeoData { 
     private String address,lat,lng; 
     public GeoData() { 
      this("", "0", "0"); 
     } 

    public GeoData(String address, String lat, String lng) { 
     this.address = address; 
     this.lat = lat; 
     this.lng = lng; 
    } 
    public String getAddress() { 
     return address; 
    } 

    public String getLat() { 
     return lat; 
    } 

    public String getLng() { 
     return lng; 
    } 

    public void setAddress(String address) { 
     this.address = address; 
    } 

    public void setLat(String lat) { 
     this.lat = lat; 
    } 

    public void setLng(String lng) { 
     this.lng = lng; 
    } 
} 

以下のメソッドをアクティビティで作成してください。

private GeoData getAddresesFronJson(JSONObject jsonObj) { 
    if (jsonObj == null) { 
     return null; 
    } 
    try { 
     // Create a JSON object hierarchy from the results 
     JSONArray resultJsonArray = jsonObj.getJSONArray("results"); 

     // Extract the Place descriptions from the results 
     ArrayList<GeoData> resultList = new ArrayList<GeoData>(
       resultJsonArray.length()); 
     JSONObject locationObject = null; 
     for (int i = 0; i < resultJsonArray.length(); i++) { 
      GeoData data = new GeoData(); 
      data.setAddress(resultJsonArray.getJSONObject(i).getString(
        "formatted_address")); 
      locationObject = resultJsonArray.getJSONObject(i) 
        .getJSONObject("geometry").getJSONObject("location"); 

      data.setLat(locationObject.getString("lat")); 

      data.setLng(locationObject.getString("lng")); 

      return data; 
     } 

    } catch (JSONException e) { 
     Log.e("JSONObject", "Cannot process JSON results", e); 
    } 
    return null; 
} 




private void computeAddress(String address) { 
    address = address.replaceAll(" ", "%20"); 
    String apiKey = "YOUR PROJECT API KEY(Genarate from google console))"; 
    String url = "https://maps.googleapis.com/maps/api/geocode/json?address=" 
      + address + "&key=" + apiKey; 
    // Log.i("googleapis--url:", url.toString()); 

    final JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Method.GET, url, null, 
      new com.android.volley.Response.Listener<JSONObject>() { 

       @Override 
       public void onResponse(JSONObject jsonObject) { 
        GeoData geoData = getAddresesFronJson(jsonObject); 
        if (geoData == null) { 
         return; 
        } 
        // Use this geoData object 
       } 

      }, new com.android.volley.Response.ErrorListener() { 

       @Override 
       public void onErrorResponse(VolleyError volleyError) { 

       } 
      }); 
} 

ジオコードオブジェクトを取得するのに、単にcomputeAddress(String address)メソッドを使用してください。 ジオコードを使用すると、マップにアドレスマーカーを表示できます。

関連する問題