如何使用Google Map Android API v2在Android地图上显示特定位置?

时间:2013-06-07 11:38:51

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

我有这个问题。

我想在android中的地图上显示特定位置。就像用户在编辑文本中输入印度一样,如何在地图上显示INDIA。我基本上想知道如何获得任何位置的纬度和经度。

请帮忙

我的代码:

public class Map extends Activity{
private GoogleMap map;
private LatLng myLoc;

@SuppressLint("NewApi") protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.map);
    Intent i=getIntent();
    String loc=i.getStringExtra("loc");
    map  = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
    Geocoder geoCoder = new Geocoder(getBaseContext(), Locale.getDefault());  

    try {
        List<Address> addresses = geoCoder.getFromLocationName(
            loc, 5);

        if (addresses.size() > 0) {
            myLoc = new LatLng(
                    (int) (addresses.get(0).getLatitude() * 1E6), 
                    (int) (addresses.get(0).getLongitude() * 1E6));
            map.setMapType(GoogleMap.MAP_TYPE_NORMAL);
            CameraUpdate update = CameraUpdateFactory.newLatLngZoom(myLoc, 14);
            map.animateCamera(update);
        }    
    } catch (IOException e) {
        e.printStackTrace();
    }
}
}

不工作。请帮忙

3 个答案:

答案 0 :(得分:1)

似乎Geocoder功能被阻止并使用网络。由于onCreate正在主线程上运行,you can get this error(in older versions of android).因此,您必须创建 AsyncTask并将地理编码器的功能移动到AsyncTask.doInBackground()。

然后,在AsyncTask.onPostExecute()之后,您应该使用谷歌地图执行其他操作。 (在这种情况下它将是主线程,它必须如何)

答案 1 :(得分:0)

使用

map.setMyLocationEnabled(true);

地图上会出现一个蓝色圆圈。它将显示当前位置。

答案 2 :(得分:0)

从edittext中选择印度时,请调用此功能:

public void showSelectedCountry(String countryName) {

    if (countryName.equals("India")) {

        LatLngBounds boundsIndia = new LatLngBounds(new LatLng(23.63936, 68.14712), new LatLng(28.20453, 97.34466));
        int padding = 0; // offset from edges of the map in pixels
        CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngBounds(boundsIndia, padding);
        mMap.animateCamera(cameraUpdate);

    }

}