我正在使用Google Maps Api V2制作演示应用。
我添加了一个简单的标记并使其可拖动
这是我的代码:
@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);
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中从Lat Long获取地址(名称)
答案 0 :(得分:14)
试试这个:
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;
}
答案 1 :(得分:4)
您应该使用Android API
中提供的Geocoder
。您需要拨打getFromLocation(latitude,longitude,maxResults)
来回复List<Address>
。