Mapbox Android SDK官方教程(三)——Annotations

Annotations

mapbox maps SDK提供了许多方法来标记一个单点、在多个点之间添加线和画多边形。通常情况下,这些要素要不画在图层之上,要不就画在图层本身。后面逐渐介绍如何添加高级要素。

Source and layer

用数据源和图层是最常用的永久展示数据的方法。这个方案也能提供更多细化的控制:

· 代表独立点的图标

· 线段

· 多边形

参考the runtime styling page(后续)获取更多信息。我们推荐使用source和layer的方式来创建annotations。下面的介绍不是使用source和layer,是一些非永久性添加标注的方法。

Markers

markers在标注地图上单点时很有用。SDK默认使用markers图标,同时你也可以定制你的图标。API暴露了定制任何你希望的bmp图像的图标接口。为了创建一个marker,你仅仅需要提供一个你需要标注位置的latlng即可。调用mapboxMap.addMarker()来将marker标记到地图上。


除了提供位置,你也可以增加一个title和用来在信息窗展示的snippet。当用户点击marker时会弹出信息窗,当点击其他区域时,信息框会自动关闭。

如果你要添加一组markers或者需要从geoJSON文件中加载markers,用mapboxMap.addMarkers()来增加一组markers。

Removing markers

SDK提供二种方法来移除markers,如果你要移除某个marker,用mapboxMap.removeMarker()传入你要移除的marker。如果你想移除所有的markers,调用mapboxMap.clear()方法。注意这也会移除所有你加到地图中的多边形和多段线。(所以用source和layer添加标注是更持久的方案)

Customize marker icon

你可以通过IconFactory来定制你的图标,并将其传递给marker。marker默认显示在图标的ceter,这意味着你如果你在一个点标记一个图标,你要加上图片内中心到底的内边距。

把用作marker的图片放到drawable文件夹,通过下面代码可以调用:


Capturing marker events

SDK提供了用户触碰marker的事件监听。默认情况下,所有markers都有onMarklistener事件监听,用来显示和隐藏信息窗。你可以通过setOnMarkerClickListener方法来重写这个默认监听事件。

为了在点击marker的title时弹出消息,使用setOnMarkerClickListener监听事件且调用toast.makeText()。为了阻止toast message和info window同时显示,在最后返回true。


Update a marker

如果你想更新marker,SDK提供了一些方法。用这些方法意味着更灵活,如果仅仅是为了更新marker。使用update APIs你可以通过ValueAnimator来创建动态markers。


Polyline and polygons

增加一条线和一个多边形和增加marker一样。考虑到这些要素本身不同,APIs也暴露不同的接口,譬如多边形颜色和线宽。除了处理单独一个位置,你可以将所有latlng对象放置到list组中,然后通过addAll方法传递他们。

Draw a polyline on the map

确保第一个和最后一个点为同一个点:


Draw a polygon on the map

确保第一个和最后一个点为同一个点:


Use line and fill layers

为了使用addPolyline或者addPolygon方法,你要有一组latlng代表线或多边形的对象。就像上面所说的,用source和layers会给你更多的灵活度来展示你的地理数据。用latlng的list组,可以创建featureCollection,再用featureCollection创建GeoJsonSource。再将GeoJsonSource填充到图层。


Bubble annotations

在SDK 5.1.0版本中开始引入气泡提醒,这是一个默认的气泡窗口,通常在marker被选中是被显示。气泡注释可以展示图片、文字和坐标信息。

如果你想改变bubble的样式,你可以在BubbleLayout的布局文件中定制,譬如气泡颜色、半径等等。

猜你喜欢

转载自blog.csdn.net/u011435933/article/details/80587440