since 6.4.0起ios地图sdk支持3d模型(bmk3dmodeloverlay)绘制,用于在地图上展示3d模型,目前支持.obj .mtl文件格式和.gltf模型加载。since 6.5.7起ios地图sdk支持.gltf .bin模型加载,并支持动画播放参数控制。
bmk3dmodeloption*option =[[bmk3dmodeloption alloc] init];option.modelname= @"among_us";option.scale=1;option.modelpath=[nsstring stringwithformat:@"%@/model3d",[nsbundle mainbundle].bundlepath];_modeloverlay =[bmk3dmodeloverlay modeloverlaywithcentercoordinate:cllocationcoordinate2dmake(39.914838,116.40299) option:option];bmk3dmodeloption*option =[[bmk3dmodeloption alloc] init];option.scale=100;option.modelname= @"batman";option.zoomfixed=yes;option.modelpath=[nsstring stringwithformat:@"%@/model3d",[nsbundle mainbundle].bundlepath];_modelbatmanoverlay =[bmk3dmodeloverlay modeloverlaywithcentercoordinate:cllocationcoordinate2dmake(39.914838,116.40499) option:option];/**向地图view添加overlay,需要实现bmkmapviewdelegate的-mapview:viewforoverlay:方法来生成标注对应的view@param overlay 要添加的overlay*/[_mapview addoverlays:@[self.modeloverlay, self.modelbatmanoverlay]];
#pragma mark -bmkmapviewdelegate/**根据overlay生成对应的bmkoverlayview@param mapview 地图view@param overlay 指定的overlay@return 生成的覆盖物view*/-(bmkoverlayview*)mapview:(bmkmapview*)mapview viewforoverlay:(id<bmkoverlay>)overlay {if([overlay iskindofclass:[bmk3dmodeloverlayclass]]){//初始化一个overlay并返回相应的bmk3dmodeloverlayview的实例bmk3dmodeloverlayview*modeloverlayview =[[bmk3dmodeloverlayview alloc] initwith3dmodeloverlay:overlay];return modeloverlayview;}return nil;}
/// 以下只支持带有animations标签的gltf模型/// 模型动画是否可用,默认为no:添加后不执行动画,值为yes时添加后立即按照配置参数执行动画,since 6.5.7@property(nonatomic, assign)bool animationisenable;/// 模型动画重复执行次数,默认0:动画将一直执行动画,since 6.5.7@property(nonatomic, assign)nsinteger animationrepeatcount;/// 当前模型动画索引值,since 6.5.7@property(nonatomic, assign)nsinteger animationindex;/// 模型动画倍速,默认:1.0,since 6.5.7@property(nonatomic, assign)cgfloat animationspeed;
bmk3dmodeloption*option =[[bmk3dmodeloption alloc] init];option.scale=2;option.modelname= @"scenes";option.type=bmk3dmodeltypegltf;option.zoomfixed=yes;option.rotatex=90;option.animationisenable=yes;option.animationindex=0;option.animationspeed=1;option.animationrepeatcount=0;option.modelpath=[nsstring stringwithformat:@"%@/model3d",[nsbundle mainbundle].bundlepath];
效果如下:
上一篇
下一篇
本篇文章对您是否有帮助?