ios地图sdk | 百度地图api sdk-凯发k8官方旗舰厅

浏览器版本低!无法浏览完整内容,建议升级或更换浏览器。
绘制弧线和面
下载开发文档
弧线

用户可以根据三个有序点唯一确定一条弧线,满足您的业务需求。

1. 添加弧线覆盖物数据(bmkarcline)
//添加弧线覆盖物
//传入的坐标顺序为起点、途经点、终点
cllocationcoordinate2d coords[3]={0};
coords[0].latitude=40.065;
coords[0].longitude=116.124;
coords[1].latitude=40.125;
coords[1].longitude=116.304;
coords[2].latitude=40.065;
coords[2].longitude=116.404;
bmkarcline*arcline =[bmkarcline arclinewithcoordinates:coords];
[_mapview addoverlay:arcline];
2. 实现代理方法生成对应的view(bmkarclineview)
#pragma mark -bmkmapviewdelegate
/**
根据overlay生成对应的bmkoverlayview
@param mapview 地图view
@param overlay 指定的overlay
@return 生成的覆盖物view
*/
-(bmkoverlayview*)mapview:(bmkmapview*)mapview viewforoverlay:(id<bmkoverlay>)overlay
{
if([overlay iskindofclass:[bmkarclineclass]])
{
bmkarclineview*arclineview =[[bmkarclineview alloc] initwitharcline:overlay];
arclineview.strokecolor=[uicolor bluecolor];
arclineview.linedash=yes;
arclineview.linewidth=6.0;
return arclineview;
}
return nil;
}
3. 运行程序

效果如图:

多边形
1. 添加多边形覆盖物数据(bmkpolygon)
// 添加多边形覆盖物
cllocationcoordinate2d coords[5]={0};
coords[0].latitude=39.965;
coords[0].longitude=116.604;
coords[1].latitude=39.865;
coords[1].longitude=116.604;
coords[2].latitude=39.865;
coords[2].longitude=116.704;
coords[3].latitude=39.905;
coords[3].longitude=116.654;
coords[4].latitude=39.965;
coords[4].longitude=116.704;
bmkpolygon*polygon =[bmkpolygon polygonwithcoordinates:coords count:5];
[_mapview addoverlay:polygon];
2. 实现代理方法生成对应的view(bmkpolygonview)
#pragma mark -bmkmapviewdelegate
/**
根据overlay生成对应的bmkoverlayview
@param mapview 地图view
@param overlay 指定的overlay
@return 生成的覆盖物view
*/
-(bmkoverlayview*)mapview:(bmkmapview*)mapview viewforoverlay:(id <bmkoverlay>)overlay{
if([overlay iskindofclass:[bmkpolygonclass]]){
bmkpolygonview* polygonview =[[bmkpolygonview alloc] initwithoverlay:overlay];
polygonview.strokecolor=[[uicolor alloc] initwithred:0.0green:0blue:0.5alpha:1];
polygonview.fillcolor=[[uicolor alloc] initwithred:0green:1blue:1alpha:0.2];
polygonview.linewidth=2.0;
polygonview.linedash=yes;
return polygonview;
}
return nil;
}
3. 运行程序

效果如图:

圆形
1. 添加圆形覆盖物数据(bmkcircle)
// 添加圆形覆盖物
cllocationcoordinate2d coor;
coor.latitude=39.915;
coor.longitude=116.404;
bmkcircle*circle =[bmkcircle circlewithcentercoordinate:coor radius:5000];
[_mapview addoverlay:circle];
2. 实现代理方法生成对应的view(bmkcircleview)
#pragma mark -bmkmapviewdelegate
/**
根据overlay生成对应的bmkoverlayview
@param mapview 地图view
@param overlay 指定的overlay
@return 生成的覆盖物view
*/
-(bmkoverlayview*)mapview:(bmkmapview*)mapview viewforoverlay:(id <bmkoverlay>)overlay{
if([overlay iskindofclass:[bmkcircleclass]]){
bmkcircleview* circleview =[[bmkcircleview alloc] initwithoverlay:overlay];
circleview.fillcolor=[[uicolor cyancolor] colorwithalphacomponent:0.5];
circleview.strokecolor=[[uicolor bluecolor] colorwithalphacomponent:0.5];
circleview.linewidth=10.0;
return circleview;
}
return nil;
}
3. 运行程序

效果如图:

渐变圆
1. 添加圆形覆盖物数据(bmkcircle)
// 添加渐变圆覆盖物
cllocationcoordinate2d coor =cllocationcoordinate2dmake(39.915,116.404);
bmkcircle*gradientcircle =[bmkcircle circlewithcentercoordinate:coor radius:5000];
[_mapview addoverlay:gradientcircle];
2. 实现代理方法生成对应view(bmkgradientcircleview)
-(__kindof bmkoverlayview*)mapview:(bmkmapview*)mapview viewforoverlay:(id<bmkoverlay>)overlay {
if([overlay iskindofclass:[bmkcircleclass]]){
bmkgradientcircleview*gradientcircleview =[[bmkgradientcircleview alloc] initwithoverlay:overlay];
/**
* 渐变规则如下:
* (0 ~ radiusweight * radius) 该部分颜色从 centercolor 渐变至 colorweight * (sidecolor - centercolor);
* (radiusweight * radius ~ radius)该部分间颜色从 centercolor colorweight * (sidecolor - centercolor) 渐变至 sidecolor; */
gradientcircleview.radiusweight=0.6;
gradientcircleview.colorweight=0.1;
gradientcircleview.centercolor=[uicolor colorwithred:93.f/255.f green:232.f/255.f blue:204.f/255.f alpha:0.0f];
gradientcircleview.sidecolor=[uicolor colorwithred:93.f/255.f green:232.f/255.f blue:204.f/255.f alpha:1.f];
// 边框
gradientcircleview.linewidth=2.f;
gradientcircleview.strokecolor=[uicolor colorwithred:93.f/255.f green:232.f/255.f blue:204.f/255.f alpha:1.f];
return gradientcircleview;
}
return nil;
}
3. 运行程序

效果如图:

自定义图片图层(图片覆盖物)

图片图层(groundoverlay)又称为图片覆盖物,此功能支持在地图的指定位置上添加一张大小合适的图片。图片可随地图的平移、缩放、旋转等操作做相应的变换。 图片图层是一种特殊的overlay, 它位于底图和底图标注层之间(即图片图层不会遮挡地图标注信息), 此外,图片图层的添加顺序不会影响其他图层(例如:poi搜索图层、我的位置图层等)的叠加关系。

1. 添加图片图层数据(bmkgroundoverlay)

图片图层对象初始化的方法有两种:(1)根据指定经纬度坐标生成 (2)根据指定区域生成。

//添加图片图层覆盖物(第一种:根据指定经纬度坐标生成)
cllocationcoordinate2d coord =cllocationcoordinate2dmake(39.910,116.420);
/**
*根据指定经纬度坐标生成一个groundoverlay
*@param position 指定的经纬度坐标
*@param zoomlevel 不损失精度绘制原始图片的地图等级
*@param anchor 绘制图片的锚点
*@param icon 绘制使用的图片
*@return 新生成的groundoverlay对象
*/
_ground =[bmkgroundoverlay groundoverlaywithposition:coord zoomlevel:12anchor:cgpointmake(0,0) icon:[uiimage imagenamed:@"groundicon.png"]];
//图片纹理透明度,最终透明度 = 纹理透明度 * alpha,取值范围为[0.0f, 1.0f],默认为1.0f
_ground.alpha=1;
[_mapview addoverlay:ground];
//添加图片图层覆盖物(第二种:根据指定区域生成)
cllocationcoordinate2d coords[2]={0};
coords[0].latitude=39.815;
coords[0].longitude=116.404;
coords[1].latitude=39.915;
coords[1].longitude=116.504;
bmkcoordinatebounds bound;
bound.southwest= coords[0];
bound.northeast= coords[1];
bmkgroundoverlay*ground2 =[bmkgroundoverlay groundoverlaywithbounds: bound
icon:[uiimage imagenamed:@"groundicon.png"]];
[_mapview addoverlay:ground2];
2. 实现代理方法返回对应的view(bmkgroundoverlayview)
#pragma mark -bmkmapviewdelegate
/**
根据overlay生成对应的bmkoverlayview
@param mapview 地图view
@param overlay 指定的overlay
@return 生成的覆盖物view
*/
-(bmkoverlayview*)mapview:(bmkmapview*)mapview viewforoverlay:(id<bmkoverlay>)overlay {
if([overlay iskindofclass:[bmkgroundoverlayclass]]){
//初始化一个overlay并返回相应的bmkgroundoverlayview的实例
bmkgroundoverlayview*groundview =[[bmkgroundoverlayview alloc] initwithgroundoverlay:overlay];
return groundview;
}
return nil;
}
3. 运行程序

效果如图:

删除overlay
//删除单个overlay
[_mapview removeoverlay:ground];
操作overlay

批量添加

/**
*向地图窗口添加一组overlay,需要实现bmkmapviewdelegate的-mapview:viewforoverlay:函数来生成标注对应的view
*@param overlays 要添加的overlay数组
*/
[_mapview addoverlays:overlays];

批量删除

/**
*移除一组overlay
*@param overlays 要移除的overlay数组
*/
[_mapview removeoverlays:overlays];

上一篇

绘制线

下一篇

点标记动画

本篇文章对您是否有帮助?

网站地图