Appearance
点标记覆盖物(Marker)
点标记覆盖物(Marker)标记覆盖物,可以用来标记地图上的点信息,包括但不限于:兴趣点、小车位置、乘客位置等。下称Marker。
添加Marker
代码如下:
java
// 从assets中加载一张名为"arrow.png"的bitmap
BitmapDescriptor bitmapDescriptor = BitmapDescriptorFactory.fromAsset(this, "arrow.png");
// 创建MarkerOptions,为添加的Marker赋予必要的属性。position表示其地理坐标
markerOptions = new MarkerOptions().icon(bitmapDescriptor).position(new LatLng(40.0462780000,116.2858500000));
// 通过DiMap创建Marker
marker = diMap.addMarker(markerOptions);Marker销毁
java
// 调用remove()方法销毁marker
marker.remove();Marker动画
代码示例,该示例创建了一个透明度、旋转及缩放的组合动画,持续时间3秒钟:
java
AnimationSet animationSet = new AnimationSet(true);
// 添加透明度动画
animationSet.addAnimation(new AlphaAnimation(0f, 1f));
// 添加旋转动画
animationSet.addAnimation(new RotateAnimation(0f, 180f, 0f, 0f, 0f));
// 缩放动画
animationSet.addAnimation(new ScaleAnimation(1f, 2f, 1f, 2f));
// 设置持续时间
animationSet.setDuration(3000);
// 设置动画回调,会在开始和结束时通知调用方
marker.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart() {
Toast.makeText(MarkerActivity.this, "Animation start!", Toast.LENGTH_SHORT).show();
}
@Override
public void onAnimationEnd() {
Toast.makeText(MarkerActivity.this, "Animation end!", Toast.LENGTH_SHORT).show();
}
});
// 开启动画
marker.startAnimation(animationSet);InfoWindow
InfoWindow是Marker上的一个气泡,可通过setSnippet、setTitle创建默认的InfoWindow,也可以自定义其样式,做更加丰富复杂的气泡。
代码示例:
java
// 如下创建了一个带有InfoWindow的marker对象。其title和snippet设置了默认样式下的标题和文字片段,setInfoWindowEnable()开启InfoWindow
MarkerOptions markerOptions = new MarkerOptions().icon(BitmapDescriptorFactory
.defaultMarker())
.position(DIAMOND_BUILDING)
.title("标题")
.snippet("文字片段")
.setInfoWindowEnable(true);
Marker markerWithInfoWindow = diMap.addMarker(markerOptions);
// 显示InfoWindow
markerWithInfoWindow.showInfoWindow();
// 隐藏InfoWindow
markerWithInfoWindow.hideInfoWindow();InfoWindowAdapter
若希望自定义InfoWindow的样式,可使用DiMap.InfoWindowAdapter返回一个自定义View做更加灵活的定制显示:
java
marker.setInfoWindowAdapter(new DiMap.InfoWindowAdapter() {
@Override
public View getInfoWindow(Marker marker) {
TextView t = new TextView(context);
return t;
}
});
// 调用showInfoWindow()更新
marker.showInfoWindow();