私は他のアクティビティにある住所(緯度、緯度ではない)のリストを持っています。これらのアドレスをIntentエクストラを介してMapActivityに渡して、それをジオコードする必要があります。これどうやってするの?以下はMapActivityにアドレスのArrayListを渡して、複数の場所をマップに表示します(アンドロイド)
私のリストビューの活動に
viewHolder.address.setText(row[4]);//Read from CSV file
私は他のアクティビティにある住所(緯度、緯度ではない)のリストを持っています。これらのアドレスをIntentエクストラを介してMapActivityに渡して、それをジオコードする必要があります。これどうやってするの?以下はMapActivityにアドレスのArrayListを渡して、複数の場所をマップに表示します(アンドロイド)
私のリストビューの活動に
viewHolder.address.setText(row[4]);//Read from CSV file
である私のアドレスデータがリストを使用して活動にデータを渡したり、アドレス
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
タイ。しかし、どうすれば住所を渡すことができますか? – Critako
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)メソッドを使用してください。 ジオコードを使用すると、マップにアドレスマーカーを表示できます。
アドレスをlat/lngに逆ジオコードする必要があります。そしてそれらをマーカーとして地図にプロットします。 Geocoderクラスを見てください。それのために – jaolstad