在网上查了很多,都是添加Marker的方法,几乎没有关于添加Text文字标注的,其实跟添加Text文字标注差别不大,下面来看看:
一、简单添加Text
aMap.addText(
new TextOptions()
.position(new LatLng(39.13455,112.456891))//位置
.text("我添加的Text") //文字内容
.backgroundColor(Color.alpha(0)) //背景颜色
.fontSize(35) //字体大小
.fontColor(Color.parseColor("#878787")) //文字颜色
);
二、根据屏幕内Marker的位置添加对应Marker位置的地域名称,根据不同的缩放比例来显示或者移除Text,先说思路:
1.添加AMap.OnCameraChangeListener,这个是在改变地图状态的时候调用的,每一次拖动或者缩放地图的时候都会调用。
2.定义一个List<Text>集合来盛放屏幕内所有的Text对象。
3.获取屏幕内所有的Marker对象,在根据Marker的位置标记Text,并将所有的Text放到List集合中返回给第二步的List<Text>。
4.在AMap.OnCameraChangeListener的回调方法中判断地图的缩放比例来设置Text的显示和回收。
代码实现:这里我只放出实现的代码,至于显示地图添加Marker可以参照网上
public class MainMapActivity extends BaseAMapAct implements
AMap.OnInfoWindowClickListener,
AMap.OnMapClickListener,
View.OnClickListener,
AMap.OnCameraChangeListener{
private List<Text> screenTextList = null;//当前屏幕的Text
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_map);
...
aMap.setOnCameraChangeListener(this);
...
}
...
@Override
public void onCameraChange(CameraPosition cameraPosition) {
}
//拖动地图时当缩放比例小于20的时候显示Text大于20就removeText
@Override
public void onCameraChangeFinish(CameraPosition cameraPosition) {
//获取当前屏幕的Marker
List<Marker> screenMarkers = aMap.getMapScreenMarkers();
if (aMap.getScalePerPixel() < 10){ //在缩放比例小于10的时候显示Text
System.out.println( "获取的比例:" + aMap.getScalePerPixel());
isShowTextPlace = true;
//删除之前添加的点
if (screenTextList != null && screenTextList.size() > 0){
MapUtil.removeScreenText(screenTextList);
screenTextList.clear();
}
screenTextList = MapUtil.getScreenText(aMap,screenMarkers,isShowTextPlace);
}else {
//删除之前添加的点
if (screenTextList != null && screenTextList.size() > 0){
MapUtil.removeScreenText(screenTextList);
screenTextList.clear();
}
}
}
}
接下来是实现添加和回收的功能
public class MapUtil {
//Text获取与添加
public static List<Text> getScreenText(AMap aMap,List<Marker> screenMarks,boolean isshow){
List<Text> textList = new ArrayList<>();
int size = screenMarks.size();
for (int i = 0;i < size; i++){
textList.add(addScreenMarkersText(aMap,screenMarks.get(i)));
}
return textList;
}
//在地图上添加Text
public static Text addScreenMarkersText(AMap aMap,Marker screenMark){
return aMap.addText(
new TextOptions()
.position(screenMark.getPosition())
.text(screenMark.getTitle())
.backgroundColor(Color.alpha(0))
.fontSize(35)
.fontColor(Color.parseColor("#878787"))
);
}
//Text的回收
public static void removeScreenText(List<Text> screenTestList){
int size = screenTestList.size();
for (int i = 0; i < size; i++){
screenTestList.get(i).remove();
}
}
}
好了,就这样简单,希望能帮到大家,互相学习。