上一篇博客介绍了地图的显示,不要太简单了, 我们要实现的效果当然不仅仅是显示地图这么废了, 现在地图是有了 , 怎么在地图上添加一个标注呢? 添加一个圆形?又或者是我想在地图上添加个自定义的View, 会不会很6? 呵呵
答案全在AMap aMap=mapView.getMap(); 我们添加的这些东西都是要在aMap上操作的 , 之前有说道定位回调的方法里面显示了系统的定位小蓝点 , 那我不想要那个效果咋整 ? 当然了SDK中的api可以修改定位点的样式 , 这个就不说了 , 对于强迫症的我来说 , 不如自己搞一个来的痛快, 系统定位蓝点不过就是个Marker而已
先来创建一个Marker , aMap.addMarker( ) 方法返回值就是Marker对象 , 方法参数接收的是 MarkerOptions ; MarkerOptions 可以设置资源图片 , 设置锚点 ,标题等等 ;重点说下这个图片MarkerOptions有个icon()方法 可以加载资源图片 , 也可以加载自定义View ; 有趣的是 ,api现在已经支持给Marker添加动画了 , 那就在添加Marker的同时 加入缩放和透明度渐变的动画
// BitmapDescriptorFactory.fromView(View view);
// BitmapDescriptorFactory.fromBitmap(Bitmap bitmap)
// BitmapDescriptorFactory.fromAsset(String s);
// BitmapDescriptorFactory.fromResource(int res);
// BitmapDescriptorFactory.fromFile(String path);
//加载一个layout
View view = View.inflate(this, R.layout.item_marker, null);
((TextView) view.findViewById(R.id.num)).setText("layout");
Marker addMarker = aMap.addMarker(new MarkerOptions()
.icon(BitmapDescriptorFactory.fromView(view))
.position(new LatLng(locationInfo.getLatitude(), locationInfo.getLongitude())));
//Marker 开启动画
private void startAnimation(Marker marker) {
AnimationSet animationSet = new AnimationSet(false);
Animation scale = new ScaleAnimation(0, 1, 0, 1);
Animation alpha = new AlphaAnimation(0, 1);
animationSet.addAnimation(alpha);
animationSet.addAnimation(scale);
animationSet.setDuration(300);
animationSet.setInterpolator(new LinearInterpolator());
marker.setAnimation(animationSet);
marker.startAnimation();
}
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center">
<ImageView
android:id="@+id/img"
android:layout_width="wrap_content"
android:layout_heigh