2

Google Maps Api V2 でデモアプリを作成しています。

シンプルなマーカーを追加し、ドラッグ可能にしました

これが私のコードです:

onCreate メソッド()

@Override
protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.demo_v2);


 googleMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
 googleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
 googleMap.setOnMapClickListener(this);
 googleMap.setOnMarkerDragListener(this);
 googleMap.setOnMapLongClickListener(this);



情報メソッドの設定()

googleMap.setInfoWindowAdapter(new InfoWindowAdapter() {

  @Override
  public View getInfoWindow(Marker arg0) {

   return null;
  }

  @Override
  public View getInfoContents(Marker marker) {

   LayoutInflater inflater = (LayoutInflater) MapsDemo.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
   View v = inflater.inflate(R.layout.custom_info, null);

   TextView tv = (TextView) v.findViewById(R.id.textView1);
   tv.setText(marker.getSnippet());

   return v;
  }
 });

 googleMap.setMyLocationEnabled(true);
 googleMap.getUiSettings().setRotateGesturesEnabled(true);
 googleMap.getUiSettings().setTiltGesturesEnabled(true);


addMarker メソッド

 marker = googleMap.addMarker(new MarkerOptions()
  .position(ROMA)
  .title("Hello")
  .snippet("Nice Place")
  .icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_launcher))
  .draggable(true));

 @Override
 public void onMarkerDrag(Marker marker) {
  // TODO Auto-generated method stub
 }

 @Override
 public void onMarkerDragEnd(Marker marker) {
  LatLng field = marker.getPosition();
  System.out.println("LatitudenLongitude:" + field.latitude + " " + field.longitude);

 }

 @Override
 public void onMarkerDragStart(Marker marker) {
  // TODO Auto-generated method stub

 }

 @Override
 public void onMapLongClick(LatLng latlng) {
  // TODO Auto-generated method stub

 }

 @Override
 public void onMapClick(LatLng latlng) {
  // TODO Auto-generated method stub
 }
}

ここで、ユーザーがマーカーをクリックしたときにアドレスが表示されるようにします。

簡単な質問: API v2 で緯度経度からアドレス (名前) を取得する方法は?

4

2 に答える 2

15

これを試して:

public List<Address> getAddress() {
    if (latitude != 0 && longitude != 0) {
        try {
            Geocoder geocoder = new Geocoder(context);
            List<Address> addresses = geocoder.getFromLocation(latitude, longitude, 1);
            String address = addresses.get(0).getAddressLine(0);
            String city = addresses.get(0).getAddressLine(1);
            String country = addresses.get(0).getAddressLine(2);
            Log.d("TAG", "address = " + address + ", city = " + city + ", country = " + country);
        } catch (Exception e) {
            e.printStackTrace();
        }
    } else {
        Toast.makeText(context, "latitude and longitude are null", Toast.LENGTH_LONG).show();
    }
    return addresses;
}
于 2013-03-29T09:58:03.313 に答える
4

Geocoderで利用可能なを使用する必要がありますAndroid APIgetFromLocation(latitude,longitude,maxResults)を返す呼び出しを行う必要がありますList<Address>

于 2013-03-29T09:50:03.587 に答える