将Lat Long转换为Google Maps ApiV2

时间:2013-03-29 09:47:24

标签: android google-maps-android-api-2

我正在使用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获取地址(名称)

2 个答案:

答案 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>