0

我有这个问题。

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

请帮忙

我的代码:

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();
    }
}
}

它不工作。请帮忙

4

3 回答 3

1

似乎地理编码器功能被阻止并使用网络。由于 onCreate 在主线程上运行,您会收到此错误(在旧版本的 android 中)。因此,您必须创建AsyncTask并将地理编码器的函数移动到 AsyncTask.doInBackground()。

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

于 2013-06-07T17:41:34.610 回答
0

利用

map.setMyLocationEnabled(true);

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

于 2013-06-07T11:45:37.353 回答
0

当您从 edittext 中选择 India 时,调用此函数:

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);

    }

}
于 2019-10-14T10:57:30.390 回答