废话
本系列第7篇,终于讲到了绘制。说到吃饭...呸,说到绘制,这在地图应用中是非常重要的一部分,很多时候我们集成地图SDK时,都不可能仅仅使用默认地图元素,在默认元素不能满足需求时,绘制就派上了用场。这篇文章来记录下最简单的绘制点标记。
Marker和InfoWindow
点标记功能包含两大部分,一部分是点(俗称 Marker)、另一部分是浮于点上方的信息窗体(俗称 InfoWindow)。SDK 对 Marker 和 InfoWindow 封装了大量的触发事件,例如点击事件、长按事件、拖拽事件。
(1)添加一个marker
LatLng latLng = new LatLng(39.906901,116.397972);
MarkerOptions markerOptions = new MarkerOptions().position(latLng)
.title("北京")
.snippet("简单描述")
.icon(BitmapDescriptorFactory.fromResource(R.drawable.custom_location_icon))
.draggable(true)
.visible(false)
.anchor(0.5f, 1f)
.alpha(0.8f);
marker = aMap.addMarker(markerOptions);
展示一个marker最基本的是要有一个经纬度,否则marker就不知道显示在哪里了。
其次还有很多有属性可以设置。
- position 经纬度位置
- title 标题
- snippet 片段,可以理解成一个非常简短的描述
- icon 自定义图标,如果不设置就展示默认的定位icon
- draggable 是否可以拖拽
- visible 是否可见
- anchor 图标的中心点
- alpha 透明度
(2)开始动画
Animation animation = new RotateAnimation(0, 360, 0, 0, 0);
animation.setDuration(1000);
animation.setInterpolator(new LinearInterpolator());
marker.setAnimation(animation);
marker.startAnimation();
(3)Marker事件
// 点击事件
aMap.setOnMarkerClickListener(new AMap.OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker) {
Log.e("TAG", "onMarkerClick:" + marker.getTitle());
return false;
}
});
// 拖拽事件
aMap.setOnMarkerDragListener(new AMap.OnMarkerDragListener() {
@Override
public void onMarkerDragStart(Marker marker) {
Log.e("TAG", "onMarkerDragStart:" + marker.getTitle());
}
@Override
public void onMarkerDrag(Marker marker) {
Log.e("TAG", "onMarkerDrag:" + marker.getTitle());
}
@Override
public void onMarkerDragEnd(Marker marker) {
Log.e("TAG", "onMarkerDragEnd:" + marker.getTitle());
}
});
(4)显示InfoWindow
marker.showInfoWindow();
// marker.hideInfoWindow();
总结
绘制是个大头,先开个简单的头,后面还有很多值得研究的点。本期节目就到这里,感谢大家的收看,我们下期再见~