package com.baidu.mapapi.overlayutil;
import android.graphics.Color;
import android.util.Log;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.BitmapDescriptorFactory;
import com.baidu.mapapi.map.Marker;
import com.baidu.mapapi.map.MarkerOptions;
import com.baidu.mapapi.map.OverlayOptions;
import com.baidu.mapapi.map.Polyline;
import com.baidu.mapapi.map.PolylineOptions;
import com.baidu.mapapi.model.LatLng;
import com.baidu.mapapi.search.busline.BusLineResult;
import java.util.ArrayList;
import java.util.List;
/**
* 用于显示一条公交详情结果的Overlay
*/
public class BusLineOverlay extends OverlayManager {
private BusLineResult mBusLineResult = null;
/**
* 构造函数
*
* @param baiduMap
* 该BusLineOverlay所引用的 BaiduMap 对象
*/
public BusLineOverlay(BaiduMap baiduMap) {
super(baiduMap);
}
/**
* 设置公交线数据
*
* @param result
* 公交线路结果数据
*/
public void setData(BusLineResult result) {
this.mBusLineResult = result;
}
@Override
public final List<OverlayOptions> getOverlayOptions() {
if (mBusLineResult == null || mBusLineResult.getStations() == null) {
return null;
}
List<OverlayOptions> overlayOptionses = new ArrayList<OverlayOptions>();
for (BusLineResult.BusStation station : mBusLineResult.getStations()) {
overlayOptionses.add(new MarkerOptions()
.position(station.getLocation())
.zIndex(10)
.anchor(0.5f, 0.5f)
.icon(BitmapDescriptorFactory
.fromAssetWithDpi("Icon_bus_station.png")));
}
List<LatLng> points = new ArrayList<LatLng>();
for (BusLineResult.BusStep step : mBusLineResult.getSteps()) {
if (step.getWayPoints() != null) {
points.addAll(step.getWayPoints());
}
}
if (points.size() > 0) {
overlayOptionses
.add(new PolylineOptions().width(10)
.color(Color.argb(178, 0, 78, 255)).zIndex(0)
.points(points));
}
return overlayOptionses;
}
/**
* 覆写此方法以改变默认点击行为
*
* @param index
* 被点击的站点在
* {@link com.baidu.mapapi.search.busline.BusLineResult#getStations()}
* 中的索引
* @return 是否处理了该点击事件
*/
public boolean onBusStationClick(int index) {
if (mBusLineResult.getStations() != null
&& mBusLineResult.getStations().get(index) != null) {
Log.i("baidumapsdk", "BusLineOverlay onBusStationClick");
}
return false;
}
public final boolean onMarkerClick(Marker marker) {
if (mOverlayList != null && mOverlayList.contains(marker)) {
return onBusStationClick(mOverlayList.indexOf(marker));
} else {
return false;
}
}
@Override
public boolean onPolylineClick(Polyline polyline) {
// TODO Auto-generated method stub
return false;
}
}