重複の可能性:
住所から緯度と経度を調べるにはどうすればよいですか?
特定の住所の緯度と経度を取得したい。これどうやってするの ?
private void getFromLocation(String address)
{
double latitude= 0.0, longtitude= 0.0;
Geocoder geoCoder = new Geocoder(this, Locale.getDefault());
try
{
List<Address> addresses = geoCoder.getFromLocationName(address , 1);
if (addresses.size() > 0)
{
GeoPoint p = new GeoPoint(
(int) (addresses.get(0).getLatitude() * 1E6),
(int) (addresses.get(0).getLongitude() * 1E6));
latitude=p.getLatitudeE6()/1E6;
longtitude=p.getLongitudeE6()/1E6;
}
}
catch(Exception ee)
{
}
}
}
これにより、アドレス文字列のすべての一致が (ループスルー) 表示されます。最初の一致だけが必要な場合は、address.size() が 0 より大きいことを確認してから、address.get(0);
私の使用法では、すべての一致を取得し、それらをオプションとして表示します。次にユーザーがいずれかをクリックすると、その GPS 位置が選択されます。
Geocoder geocoder = new Geocoder(getBaseContext());
List<Address> addresses;
try {
addresses = geocoder.getFromLocationName("Example StreeT, UK, DNFE", 20);
for(int i = 0; i < addresses.size(); i++) { // MULTIPLE MATCHES
Address addr = addresses.get(i);
double latitude = addr.getLatitude();
double longitude = addr.getLongitude(); // DO SOMETHING WITH VALUES
}
}
以下のコードから取得できます。
private void GetLatitudeAndLongitude() {
geocoder = new Geocoder(mContext, Locale.getDefault());
try {
List<Address> addresses = geocoder.getFromLocationName(txtLocation.getText().toString().trim().toLowerCase(), 1);
if (addresses.size() > 0) {
homeInfoModel.setLalitude(String.valueOf(addresses.get(0).getLatitude()));
homeInfoModel.setLongitude(String.valueOf(addresses.get(0).getLongitude()));
}
} catch (IOException e) {
e.printStackTrace();
}
}