我有这个问题。
我想在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();
}
}
}
这不起作用。请帮助
似乎Geocoder功能已被阻止并正在使用网络。由于onCreate在主线程上运行,因此you can get this error(in older versions of android).因此,您必须创建 AsyncTask并将地址解析器的函数移至AsyncTask.doInBackground()。
然后,在AsyncTask.onPostExecute()中,您应该对Google Map执行其他操作。 (在这种情况下,它将在主线程上,必须如何)]
使用
map.setMyLocationEnabled(true);
一个蓝色圆圈将出现在地图上。它将显示当前位置。
当您从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);
}
}