基于瓦片地图(TileView)开发室内导览模块其实并不复杂,无非就是以下5点:
- 1、瓦片地图基础配置;
- 2、显示/隐藏导览路线;
- 3、显示/隐藏展项Marker;
- 4、收号之后的定位效果;
- 5、回到我的位置。
对上述功能进行底层封装,上层不再直接操作TileView
,直接调用即可。调用时传入配置参数,能极大的减少这一部分的开发工作量,封装此库的目的即在于此。
dependencies {
compile 'com.github.Tailyou:OkTileMap:0.0.1'
}
HdTileMap中内置BaseMapFragment
,封装了大量的共性功能,对于需要定制的个性功能则提供了抽象方法供上层实现,如点击Marker后的Callout样式等。提供了BaseMapFragment
的默认实现DefaultMapFragment
。
内置展项基类BaseExhibit
,包含多模号、X坐标、Y坐标、展项名称、展项定位小图路径、展项定位大图路径。
内置地图参数配置类MapConfig
,可配置尺寸宽sizeWidth
、尺寸长sizeHeight
、最小缩放限制minScale
,最大缩放限制maxScale
、地图图片基路径baseMapPath
、是否设置scale==0scale0
、最小缩放模式minimumScaleMode
及BitmapProvider
。
采用建造者模式构造参数配置类,内置构造器MapConfigBuilder
,需要配置的参数部分提供了默认值。
/**
* 配置MapConfig
*
* @author 祝文飞(Tailyou)
* @time 2017/4/28 13:16
*/
private MapConfig initMapConfig() {
return new MapConfigBuilder()
.setBaseMapString(AppConfig.getMapFilePath())
.setSizeWidth(2372)
.setSizeHeight(3470)
.setScale0(true)
.setBitmapProvider(new BitmapProviderFile())
.create();
}
MapConfig mapConfig = initMapConfig();
getSupportFragmentManager().beginTransaction()
.replace(R.id.flMapContainer, DefaultMapFragment.newInstance(mapConfig))
.commit();
//传入展项
private void showMarker(ArrayList<ExhibitBean> list) {
Intent intent = new Intent(Intents.Action.SHOW_MARKERS);
intent.putParcelableArrayListExtra(Intents.EXTRA.MARKERS, list);
sendBroadcast(intent);
}
private void hideMarker() {
Intent intent = new Intent(Intents.Action.HIDE_MARKERS);
sendBroadcast(intent);
}
//传入路线图片路径
private void showRoute(String routeImgPath) {
Intent intent = new Intent(Intents.Action.SHOW_ROUTE);
intent.putExtra(Intents.EXTRA.ROUTE_PATH, routeImgPath);
sendBroadcast(intent);
}
private void hideRoute() {
Intent intent = new Intent(Intents.Action.HIDE_ROUTE);
sendBroadcast(intent);
}
//传入多模号
private void receiveAutoNo(int autoNo) {
Intent intent = new Intent(Intents.Action.RECEIVE_NO);
intent.putExtra(Intents.EXTRA.AUTO_NO, autoNo);
sendBroadcast(intent);
}
private void toMyLocation() {
Intent intent = new Intent(Intents.Action.TO_MY_LOCATION);
sendBroadcast(intent);
}
详细用法参见demo,项目地址:https://git.oschina.net/tailyou/HD_Frame_TileMap