如何判断百度地图清除overlay的overlay是不是polyline

Android中Google地图折线层(Polyline) - 永远的技术newbie - ITeye博客
博客分类:
我的工程在Android Google
Map上需要划折线,发现API中竟然没有Polyline,分析Overlay类之后,自己做了一个折线类,使用起来跟Flex中的Polyline差
不多,其余不多说,直接贴上代码。
package westyi.map.
import java.util.L
import android.graphics.C
import android.graphics.C
import android.graphics.P
import android.graphics.P
import com.google.android.maps.GeoP
import com.google.android.maps.MapV
import com.google.android.maps.O
import com.google.android.maps.P
* Goolge地图之Polyline实现
* @author westyi
public class Polyline extends Overlay {
List&GeoPoint&
* 构造函数,使用GeoPoint List构造Polyline
* @param points
GeoPoint点List
public Polyline(List&GeoPoint& points) {
this.points =
paint = new Paint();
paint.setColor(Color.BLUE);
paint.setAlpha(150);
paint.setAntiAlias(true);
paint.setStyle(Paint.Style.FILL_AND_STROKE);
paint.setStrokeWidth(4);
* 使用GeoPoint点List和Paint对象来构造Polyline
* @param points
GeoPoint点List,所有的拐点
* @param paint
Paint对象,用来控制划线样式
public Polyline(List&GeoPoint& points, Paint paint) {
this.points =
this.paint =
* 真正将线绘制出来 只需将线绘制到canvas上即可,主要是要转换经纬度到屏幕坐标
public void draw(Canvas canvas, MapView mapView, boolean shadow) {
if (!shadow) {// 不是绘制shadow层
Projection projection = mapView.getProjection();
if (points != null) {
if (points.size() &= 2) {
Point start = projection.toPixels(points.get(0), null);// 需要转换坐标
for (int i = 1; i & points.size(); i++) {
Point end = projection.toPixels(points.get(i), null);
canvas.drawLine(start.x, start.y, end.x, end.y, paint);// 绘制到canvas上即可
简单的用例如下:
List&GeoPoint& points = new ArrayList&GeoPoint&();
points.add(new GeoPoint(356694));
points.add(new GeoPoint(415059));
points.add(new GeoPoint(435315));
points.add(new GeoPoint(398236));
Polyline polyline = new Polyline(points);
map.getOverlays().add(polyline); //map是MapView类型
map.invalidate();
OK, 大功告成!看看效果如下:
浏览: 52995 次
来自: 北京
需要这个。。
我的地图上面的地名啊什么的为什么总是英文的了
你好,我向请教一下,使用Google Map 开发,不论是在模 ...
解决了 困扰我一天的问题
简单明了。好下次自动登录
现在的位置:
& 综合 & 正文
iOS基于百度地图的开发(4)——路径搜索
本文通过起始点左边和终点坐标来说明接口的使用方法。
1. 进行路径搜索
BMKSearch* search = [[BMKSearch alloc] init]; //创建搜索对象,注意不要释放该对象
search.delegate = //设置路径搜索结果回调代理为自身
BMKPlanNode* currentNode = [[BMKPlanNode alloc] init];
currentNode.pt = theMapView.userLocation.
currentNode.name = @"aaa"; //注意,这里不能为空@""
BMKPlanNode* poiNode = [[BMKPlanNode alloc] init];
poiNode.pt = vehicleLocation.
poiNode.name = @"bbb";//注意,这里不能为空@""
[search drivingRouteSearch:nil startNode:currentNode endCity:nil endNode:poiNode];//仅以搜索驾驶路线为例
2. 通过路线搜索结果回调来处理路线
- (void)onGetDrivingRouteResult:(BMKPlanResult*)result errorCode:(int)error
if (error == BMKErrorOk)
BMKRoutePlan* plan = (BMKRoutePlan*)[result.plans objectAtIndex:0];
BMKRoute* route = [plan.routes objectAtIndex:0];
BMKMapPoint* points = malloc(sizeof(CLLocationCoordinate2D) * route.steps.count);
for (int i = 0; i & route.steps. ++i)
BMKStep* step = [route.steps objectAtIndex:i];
BMKMapPoint point = BMKMapPointForCoordinate(step.pt); //注意这里的处理方法
points[i] =
[mapView removeOverlays:[mapView overlays]];
BMKPolyline* polyLine = [BMKPolyline polylineWithPoints:points count:route.steps.count];
free(points);
[mapView addOverlay:polyLine];
3. 在处理路径回调中处理路径的显示
- (BMKOverlayView *)mapView:(BMKMapView *)mapView viewForOverlay:(id &BMKOverlay&)overlay
BMKOverlayView *result = [[[BMKPolylineView alloc] initWithPolyline:overlay] autorelease];
result.strokeColor = [UIColor blueColor];
result.lineWidth = 4.0;
result.lineJoin = kCGLineJoinR
result.lineCap = kCGLineCapR
&&&&推荐文章:
【上篇】【下篇】安全检查中...
请打开浏览器的javascript,然后刷新浏览器
< 浏览器安全检查中...
还剩 5 秒&发送私信成功
DevStore用户登录
还没有DevStore帐号?
快捷登录:
您暂时无法上传评测 只有才可上传哦~
您已申请了
第一步审核通过后才可上传评测哦~
您目前的活力值不够下载该资源哦~~
怎么样快速获得活力值?
下载此资源将扣除活力值-20
(只在首次下载扣除活力值,之后可以免费下载)
满足所有需求,助您轻松工作
高德地图iOS版服务评测
DevStore编辑 刘艳丽 |
11:00 && 浏览量(7833) &&
一 客户端集成
高德地图开发大体流程:
注册高德帐号=》申请新密钥=》下载SDK=》集成开发=》测试应用=》发布应用
1.注册用户
高德地图注册地址:/member,如果已经有高德账号可以跳过这步。
2.申请新密钥
申请密钥时要注意高德地图API使用条款,应用名称随便填写。
填写完确认无误后点击生成密钥,然后再密钥管理中可以看到刚才新申请的密钥信息。
这里的密钥我们之后创建项目集成高德地图的时候会用到。
3.下载IOS SDK和相关文件
SDK下载地址: /api/ios-sdk/down/
在这里我们只需要下载开发包的静态库文件即可,如果需要做POI的,可以把编码表也下载下来以供查询。
4.集成开发
&&&&1)新建工程
&&&&2)添加高德地图SDK所需的静态库,导入必要地框架。
下载AMap_iOS_Map_Lib_V2.2.1,解压后文件夹中包括2D、3D和Search的文件夹;2D是栅格地图库、3D是矢量地图库、Search为搜索库,栅格和矢量地图只能选择一个使用,使用接口类似。
a.&在TARGETS-Build Phases-Linked Frameworks and Libraries 点击“+”,弹出添加列表后,点击”Add Other…”来导入文件;
如果要做3D就导入3D文件夹的MAMapKit.framework,如果要做2D栅格地图就导入2D文件夹的MAMapKit.framework和AMap.bundle,接下来再导入Search文件夹的静态库就可以。
b. 在TARGETS- Build Phases -Linked Frameworks and Libraries 中点击“+”,弹出添加列表后添加如下系统库:
libz.dylib
libstdc++6.dylib
OpenGLES.framework
Security.framework
SystemConfiguration.framework
CoreTelephony.framework
CoreLocation.framework
QuartzCore.framework
c. 在TARGETS-Build Settings – Other Linker Flags 中添加 –ObjC
&&&&3)调用相关方法
首先,为了使用方便,在.pch文件中导入如下头文件,这里的API_KEY就是前面我们生成的密钥。
#import &MAMapKit/MAMapKit.h&
#import &AMapSearchKit/AMapSearchAPI.h&
& &#import &AMapSearchKit/AMapCommonObj.h&
#define API_KEY @"b7cfb07cb9f52"
a.添加用户Key和搜索Key
[MAMapServices&sharedServices].apiKey&=&API_KEY;
AMapSearchAPI&*search&=&[[AMapSearchAPI&alloc]&initWithSearchKey:[MAMapServices&sharedServices].apiKey&Delegate:self];
b.显示地图
在h文件加入MAMapView的代理并property一个MAMapView
@property (nonatomic, strong) MAMapView *mapV
在m文件中viewWillApper方法中加入如下代码:
self.mapView.frame&=&self.view.
&&&&self.mapView.delegate&=&
&&&&[self.view&addSubview:self.mapView];
&&&&self.mapView.visibleMapRect&=&MAMapRectMake(,&,&6656);
c.改变地图类型,显示实时交通图层,自定义图层。
//0,1,2分别对应的时标准地图,卫星地图,黑夜地图
self.mapView.mapType&=&0;
//实时交通图层的显示与隐藏
self.mapView.showTraffic&=&YES;
//自定义图层的样式
-(MATileOverlay&*)constructTileOverlayWithFloor:(NSInteger)floor
//构建URL模板
NSString&*URLTemplate&=&[NSString&stringWithFormat:@"/xiangce/webroot/cms/image/06233-%d.jpg",floor];
&&&&MATileOverlay&*tileOverlay&=&[[MATileOverlay&alloc]initWithURLTemplate:URLTemplate];
//可见最小值
tileOverlay.minimumZ&=&18;
//可见最大值
tileOverlay.maximumZ&=&20;
//可渲染区域
tileOverlay.boundingMapRect&=&MAMapRectForCoordinateRegion(MACoordinateRegionMakeWithDistance(CLLocationCoordinate2DMake(39.6.372830),&200,&200));
&&&&return&tileO
//让图层在地图中显示
-(MAOverlayView&*)mapView:(MAMapView&*)mapView&viewForOverlay:(id&MAOverlay&)overlay
&&&&if&([overlay&isKindOfClass:[MATileOverlay&class]])&{
&&&&&&&&MATileOverlayView&*tileOverlayView&=&[[MATileOverlayView&alloc]initWithTileOverlay:overlay];
&&&&&&&&return&tileOverlayV
&&&&return&
d.显示标注
//定义三个标注,放到annotataions数组
-(void)initAnnotations
&&&&self.annotations=[NSMutableArray&array];
&&&&MAPointAnnotation&*red=[MAPointAnnotation&new];
&&&&red.coordinate=CLLocationCoordinate2DMake(39.6.406026);
&&&&red.title=@"Red&Annotation";
&&&&[self.annotations&insertObject:red&atIndex:0];
&&&&MAPointAnnotation&*green=[[MAPointAnnotation&alloc]&init];
&&&&green.coordinate=CLLocationCoordinate2DMake(39.6.296248);
&&&&green.title=@"Green&Annotation";
&&&&[self.annotations&insertObject:green&atIndex:1];
&&&&MAPointAnnotation&*purple=[[MAPointAnnotation&alloc]&init];
&&&&purple.coordinate=CLLocationCoordinate2DMake(40.6.460577);
&&&&purple.title=@"Purple&Annotation";
&&&&[self.annotations&insertObject:purple&atIndex:2];
//设置标注的样式
-(MAAnnotationView&*)mapView:(MAMapView&*)mapView&viewForAnnotation:(id&MAAnnotation&)annotation
&&&&if&([annotation&isKindOfClass:[MAPointAnnotation&class]])&{
&&&&&&&&static&NSString&*pointReuseIndetifier=@"pointReuseIndetifier";
&&&&&&&&MAPinAnnotationView&*annotationView=(MAPinAnnotationView&*)[mapView&dequeueReusableAnnotationViewWithIdentifier:pointReuseIndetifier];
&&&&&&&&if&(annotationView==nil)&{
&&&&&&&&&&&&annotationView=[[MAPinAnnotationView&alloc]initWithAnnotation:annotation&reuseIdentifier:pointReuseIndetifier];
//标注气泡弹出
annotationView.canShowCallout=YES;
//标注动画显示
annotationView.animatesDrop=YES;
//标注可以拖动
annotationView.draggable=YES;
//气泡右方进入详情按钮
//annotationView.rightCalloutAccessoryView=[UIButton&buttonWithType:UIButtonTypeDetailDisclosure];
//设置标注的颜色
annotationView.pinColor=[self.annotations&indexOfObject:annotation];
&&&&&&&&return&annotationV
&&&&return&
e.地图截屏
UIImage&*screenshotImage&=&[self.mapView&takeSnapshotInRect:inRect];
这里的inRect参数就是截图的区域范围
//是否打开定位
self.mapView.showsUserLocation&=&YES;
定位显示模式有三种模式:
//定位的三种显示模式:0,1,2分别对应的是:地图上显示位置(默认模式)、地图跟着位置移动以及随着方向旋转
self.mapView.userTrackingMode=0;
g.兴趣点搜索
首先在.h文件添加代理,property一个AMapSearchAPI
@property (nonatomic, strong) AMapSearchAPI *
在.m文件里写如下代码
//关键字搜索
-&(void)searchPoiByKeyword
&&&&AMapPlaceSearchRequest&*request&=&[[AMapPlaceSearchRequest&alloc]&init];
//搜索类型
request.searchType&=&AMapSearchType_PlaceK
//搜索关键字
request.keywords&=&@"肯德基";
//搜索城市
request.city&=&@[@"010"];
&//返回扩展信息
request.requireExtension&=&YES;
&&&&[self.search&AMapPlaceSearch:request];}
//周边搜索
-&(void)searchPoiByCenterCoordinate
&&&&AMapPlaceSearchRequest&*request&=&[[AMapPlaceSearchRequest&alloc]&init];
&&&&request.searchType&=&AMapSearchType_PlaceA
&&&&request.location&=&[AMapGeoPoint&locationWithLatitude:39.990459&longitude:116.481476];
&&&&request.keywords&=&@"餐饮";
//按照距离排序
request.sortrule&&&&&&&&&&&&=&1;
&&&&request.requireExtension&&&&=&YES;
//过滤搜索结果
AMapPlaceSearchFilter&*filter&=&[[AMapPlaceSearchFilter&alloc]&init];
&&&&filter.costFilter&=&@[@"100",&@"200"];
&&&&filter.requireFilter&=&AMapRequireG
&&&&request.searchFilter&=&
[self.search&AMapPlaceSearch:request];}
//指定区域搜索
-&(void)searchPoiByPolygon
&&&&NSArray&*points&=&[NSArray&arrayWithObjects:[AMapGeoPoint&locationWithLatitude:39.990459&longitude:116.481476],[AMapGeoPoint&locationWithLatitude:39.890459&longitude:116.581476],&nil];
&&&&AMapGeoPolygon&*polygon&=&[AMapGeoPolygon&polygonWithPoints:points];
&&&&AMapPlaceSearchRequest&*request&=&[[AMapPlaceSearchRequest&alloc]&init];
&&&&request.searchType&=&AMapSearchType_PlaceP
&&&&request.polygon&=&
&&&&request.keywords&=&@"Apple";
&&&&request.requireExtension&=&YES;
[self.search&AMapPlaceSearch:request];}
// 根据兴趣点ID来搜索
-&(void)searchPoiByID
&&&&AMapPlaceSearchRequest&*request&=&[[AMapPlaceSearchRequest&alloc]&init];
// & &B000A80WBJ & &酒店
& & // & &B00141IEZK & &餐厅
& & // & &B000A876EH & &电影院
& & // & &B000A7O1CU & &景区
request.searchType&=&AMapSearchType_PlaceID;
&&&&request.uid&=&@"B000A80WBJ";
&&&&request.requireExtension&=&YES;
&&&&[self.search&AMapPlaceSearch:request];
h.路径规划
-&(void)searchNavi
AMapNavigationSearchRequest&*navi&=&[[AMapNavigationSearchRequest&alloc]&init];
//搜索类型BUS是公交Drive是驾车Walking是步行
navi.searchType&=&AMapSearchType_NaviB
&&&&navi.requireExtension&=&YES;
&&&&navi.city&=&@"beijing";
navi.origin&=&[AMapGeoPoint&locationWithLatitude:self.startCoordinate.latitude&longitude:self.startCoordinate.longitude];
navi.destination&=&[AMapGeoPoint&locationWithLatitude:self.destinationCoordinate.latitude&longitude:self.destinationCoordinate.longitude];
[self.search&AMapNavigationSearch:navi];}
接受和处理查询结果
-&(void)onNavigationSearchDone:(AMapNavigationSearchRequest&*)request
&&&&&&&&&&&&&&&&&&&&&&response:(AMapNavigationSearchResponse&*)response
//展示当前路线方案
NSArray&*polylines&=&
//公交导航
if&(self.searchType&==&AMapSearchType_NaviBus)
&&&&&&&&polylines&=&[CommonUtility&polylinesForTransit:self.route.transits[self.currentCourse]];
//步行,驾车导航
&&&&&&&&polylines&=&[CommonUtility&polylinesForPath:self.route.paths[self.currentCourse]];
[self.mapView&addOverlays:polylines];
//缩放地图使其适应polylines的展示
self.mapView.visibleMapRect&=&[CommonUtility&mapRectForOverlays:polylines];
更多IOS SDK集成方法请参考详细DEMO。
&&&&4)验证
运行程序,地图类型和交通图层效果如下图所示:
二 遇到的问题
1.在初始化MAMapView对象的时候,需要用到创建应用生成的密钥,这个密钥一定不要复制错,人总有手抖的时候,笔者就因为复制错密钥调试找错误找了好久。╮(╯▽╰)╭
2.在真机调试的时候,创建项目的Bundle Identifier要与证书的Bundle ID一致,这个也要注意好。
3.在不需要使用地图功能的时候,记得要remove掉地图的所有加载功能。
三 上手难易
高德地图使用起来比较简单,只要掌握面向接口开发,边看文档边开发,每个接口的调用都是简单明了的。
四 开发支持和文档
高德地图的官方网站提供了IOS集成文档和相关示例代码下载
/api/ios-sdk/guide/introduction/
此服务评测版权归DevStore所有,禁止转载,申请升级为
才可进行测评
声明:DevStore评测内容都是基于专业评测人员/开发者通过真实的测试之后得出的数据,服务版本实时都在更新,所以评测并不一定是此服务的最新版本,但我们会秉承公正专业精准的态度,对开发者负责,同时欢迎大家监督和建议,如对评测内容有异议,请提交纠错,由专业的评测团队再次评测,我们会尽最大努力为大家提供更贴心的服务。
DevStore_全球首家第三方开发者服务商店,最精准的服务对比、最专业的服务评测、最及时的行业动态,为开发者挑选服务提供最全面的参考和专业分析,加入,从此告别熬夜加班,你也可以这么帅!搜索微信号:DevStore
其他地图评测
此评测的相关源码
开发者交流群:
DevStore技术交流群2:
运营交流群:
产品交流群:
深圳尺子科技有限公司
深圳市南山区蛇口网谷万海大厦C栋504
Copyright (C) 2015 DevStore. All Rights Reserved其他 微信小程序SDK 高德地图手机版 高德地图车机版 移动端示例中心 查看移动端典型应用场景的开发示例 JS API 示例中心 查看JS API典型应用场景的开发示例 功能在...
日&-&的线段,通过aMap.addPolyline(PolylineOptions options)来添加到地图上,Polyline...3、圆(Circle):除了通用的 Polygon 类,高德地图 Android SDK 还...
最佳答案: 亲,小德最近有些秀逗了,麻烦亲请详细解释下呦,您是指API开发性的问题吗?更多关于高德地图删除polyline的问题&&
日&-&高德地图-覆盖物显示1.折线Polyline类PolylineOptions,是折线的选项类,增加线段、可见性,设置实线、虚线等。demoPolylineOptionspolylineOptions=newP...
日&-&return polylineRif ([overlay isKindOfClass:[MAPolyline class]]) ...o 坑爹的高德地图o android textview 添加下划线 中划线 删除线...
日&-&marker.setMap(null);清除地图上全部覆盖物,用:...不如icon的值为空,就会调用高德默认的marker哟,也蛮...5] //补充线样式 }); polyline.setMap(mapObj)...
日&-&CocoaChina >> iOS开发 >> 怎么清除 百度地图画的轨迹线 上一主题下一主题...[_mapView addOverlay:polyline]; count++; }-(BMKOverlayView *)mapView...
日&-&具体高德用了几个层 我还真不知道 因为我没看到官方的标注但是百度地图是这样...首先我们看折线(Polyline): 折线的关键类为 Polyline,在地图上定义了...
日&-&高德 开发 Android 地图SDK 开发指南 在地图上绘制 绘制点标记 更新时间:日点标记用来在地图上标记任何位置,例如用户位置、车辆位置、店铺位置等一切...
日&-&高德地图 Windows Phone SDK 中包括的覆盖物主要有:...(1)折线的添加:您可以通过 Amap.AddPolyline(AMapPolyline...(2)图片覆盖物的删除:类似标注,不做详述。移动...
日&-&【高德】在提供路线规划的时候,会提供用户自定义路线规划功能,这是别家没有做到...(polyline != null){ polyline.setMap(null); } polyline = new AMa...
日&-&searchRoute = routes[0].getPolyline();//导航路线 map.addOverlay(searchRoute...map.removeOverlay(rout...
【高德】在提供路线规划的时候,会提供用户自定义路线规划功能,这是别家没有做到...} var mapO var route_ var MD var...
日&-&分类:iOS(42) 作者同类文章X 高德地图(3) 作者同类文章X ...{ //show route MAPolyline *route = [MAPolyline polylineWithCoordinates:...
日&-&(116..960287)); //绘制轨迹 var polyline = new AMap.Polyline({ map:mapObj, path:lineArr, strokeColor:&#00A&,//线颜色 strokeOpacity:1...
日&-&分类:iOS(42) 作者同类文章X 高德地图(3) 作者同类文章X ...MAPolylineView *polylineView = [[MAPolylineView alloc] initWithPolyline:overlay...
日&-&最近一段时间在开发一个跑步软件,要用到高德地图来显示用户当前位置,记录用户跑步...MAPolylineView *polylineView = [[MAPolylineView alloc] initWi...
分类:android开发高德地图使用 (7835) (0) 公司做了个项目用到了高德好多的...{ PolylineOptions polt=new PolylineOptions(); for(int i=0;i&list.size(...
日&-&通过更改Polyline 下 strokeWeight 属性值来设置轨迹线的粗细,高德默认是6 更改后...下一篇win7完全卸载,并且从window服务列表里删除相关文章推荐 o ...
日&-&} MAPolyline *commonPoly = [MAPolylinepolylineWithCoordinates:commonPolyLineCoordscount:2]; [self.mapViewaddOverlay:commonPoly]; } // MAMapV...}

我要回帖

更多关于 高德地图 overlay 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信