将View固定到地图和地图的某个位置上
在已经学习了如何通过把Zoom View固定到一个特定的屏幕位置上从而来添加它。可以把任何由View派生的对象固定到一个Map View(包括布局和其他的View Group)上,既可以把它附加到一个屏幕位置,也可以把它附加到一个地理地图位置。
在第二种(地图位置)的情况中,View将会通过移动来跟随它在地图上被固定的位置,从而可以有效地当做一个交互的地图标记而使用。作为一个对资源更加敏感的方法,它通常被保留为可以提供细节的"气球",当在混合地图(mashup)中单击一个标记的时候,经常会通过显示它来提供更多的详细信息。
这两种固定机制都是通过对MapView调用addView而实现的,addView通常出现在MapActivity的onCreate或者onRestore方法中。需要给它传递你希望固定的View以及要使用的布局参数。
传递给addView的MapView.LayoutParams参数确定了如何将View添加到地图上,以及将其添加到地图的哪个位置。
要根据一个物理地图位置来固定一个View,需要在构建新的MapView.LayoutParams的时候传递4个参数,分别用来表示高度、宽度、要固定的GeoPoint和布局对齐方式。
移动地图的时候第一个TextView将留在左上角不动,而第二个TextView将会通过移动,从而保持在地图上特定的位置不变。
要从一个MapView中移除一个View,可以调用RemoveView,并给它传递你希望移除的View实例,如下所示:
Java代码:
在已经学习了如何通过把Zoom View固定到一个特定的屏幕位置上从而来添加它。可以把任何由View派生的对象固定到一个Map View(包括布局和其他的View Group)上,既可以把它附加到一个屏幕位置,也可以把它附加到一个地理地图位置。
在第二种(地图位置)的情况中,View将会通过移动来跟随它在地图上被固定的位置,从而可以有效地当做一个交互的地图标记而使用。作为一个对资源更加敏感的方法,它通常被保留为可以提供细节的"气球",当在混合地图(mashup)中单击一个标记的时候,经常会通过显示它来提供更多的详细信息。
这两种固定机制都是通过对MapView调用addView而实现的,addView通常出现在MapActivity的onCreate或者onRestore方法中。需要给它传递你希望固定的View以及要使用的布局参数。
传递给addView的MapView.LayoutParams参数确定了如何将View添加到地图上,以及将其添加到地图的哪个位置。
要根据屏幕位置添加一个新的View,需要指定一个新的MapView.LayoutParams,它其中包含了用来设置View的高度和宽度的参数、x/y屏幕坐标以及用来确定位置的对齐方式(alignment),如下所示:
int y = 10;
int x = 10;
MapView.LayoutParams screenLP;
screenLP = new MapView.LayoutParams(MapView.LayoutParams.WRAP_CONTENT, MapView.LayoutParams.WRAP_CONTENT, x, y, MapView.LayoutParams.TOP_LEFT);
EditText editText1 = new EditText(getApplicationContext());
editText1.setText("Screen Pinned");
mapView.addView(editText1, screenLP);
要根据一个物理地图位置来固定一个View,需要在构建新的MapView.LayoutParams的时候传递4个参数,分别用来表示高度、宽度、要固定的GeoPoint和布局对齐方式。
Double lat = 37.422134*1E6;
Double lng = -122.084069*1E6;
GeoPoint geoPoint = new GeoPoint(lat.intValue(), lng.intValue());
MapView.LayoutParams geoLP;
geoLP = new MapView.LayoutParams(MapView.LayoutParams.WRAP_CONTENT, MapView.LayoutParams.WRAP_CONTENT, geoPoint, MapView.LayoutParams.TOP_LEFT);
EditText editText2 = new EditText(getApplicationContext());
editText2.setText("Location Pinned");
mapView.addView(editText2, geoLP);
移动地图的时候第一个TextView将留在左上角不动,而第二个TextView将会通过移动,从而保持在地图上特定的位置不变。
要从一个MapView中移除一个View,可以调用RemoveView,并给它传递你希望移除的View实例,如下所示:
Java代码:
mapView.removeView(editText2);