package com.baidu.mapapi.overlayutil;
import android.os.Bundle;
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.search.poi.PoiIndoorResult;
import java.util.ArrayList;
import java.util.List;
/**
* 用于显示indoorpoi的overly
*/
public class IndoorPoiOverlay extends OverlayManager {
private static final int MAX_POI_SIZE = 10;
private PoiIndoorResult mIndoorPoiResult = null;
/**
* 构造函数
*
* @param baiduMap
* 该 IndoorPoiOverlay 引用的 BaiduMap 对象
*/
public IndoorPoiOverlay(BaiduMap baiduMap) {
super(baiduMap);
}
/**
* 设置IndoorPoi数据
*
* @param indoorpoiResult
* 设置indoorpoiResult数据
*/
public void setData(PoiIndoorResult indoorpoiResult) {
this.mIndoorPoiResult = indoorpoiResult;
}
@Override
public final List<OverlayOptions> getOverlayOptions() {
if (mIndoorPoiResult == null || mIndoorPoiResult.getmArrayPoiInfo() == null) {
return null;
}
List<OverlayOptions> markerList = new ArrayList<OverlayOptions>();
int markerSize = 0;
for (int i = 0; i < mIndoorPoiResult.getmArrayPoiInfo().size()
&& markerSize < MAX_POI_SIZE; i++) {
if (mIndoorPoiResult.getmArrayPoiInfo().get(i).latLng == null) {
continue;
}
markerSize++;
Bundle bundle = new Bundle();
bundle.putInt("index", i);
markerList.add(new MarkerOptions()
.icon(BitmapDescriptorFactory.fromAssetWithDpi("Icon_mark"
+ markerSize + ".png")).extraInfo(bundle)
.position(mIndoorPoiResult.getmArrayPoiInfo().get(i).latLng));
}
return markerList;
}
/**
* 获取该 IndoorPoiOverlay 的 indoorpoi数据
*
* @return
*/
public PoiIndoorResult getIndoorPoiResult() {
return mIndoorPoiResult;
}
/**
* 覆写此方法以改变默认点击行为
*
* @param i
* 被点击的poi在
* {@link com.baidu.mapapi.search.poi.PoiIndoorResult#getmArrayPoiInfo()} } 中的索引
* @return
*/
public boolean onPoiClick(int i) {
return false;
}
@Override
public final boolean onMarkerClick(Marker marker) {
if (!mOverlayList.contains(marker)) {
return false;
}
if (marker.getExtraInfo() != null) {
return onPoiClick(marker.getExtraInfo().getInt("index"));
}
return false;
}
@Override
public boolean onPolylineClick(Polyline polyline) {
// TODO Auto-generated method stub
return false;
}
}