iphone – MapKit Polyline自定义缩放?

iphone – MapKit Polyline自定义缩放?,第1张

概述我正在尝试学习如何使用折线连接ios6中地图上的两个点.首先,我已经阅读了关于这个主题的每个教程,简单的Google搜索出现了,并且由于一个原因无法使折线工作.我看过的每个教程都会将折线添加到地图中,并调整地图的缩放以适应整条线.如果我希望地图在恒定距离内保持放大并且只显示折线的末端(如果它比当前视图大),我将如何在ios6中制作和添加折线? 例如,假设我有一条长达一英里的折线,并希望地图保持在一 我正在尝试学习如何使用折线连接ios6中地图上的两个点.首先,我已经阅读了关于这个主题的每个教程,简单的Google搜索出现了,并且由于一个原因无法使折线工作.我看过的每个教程都会将折线添加到地图中,并调整地图的缩放以适应整条线.如果我希望地图在恒定距离内保持放大并且只显示折线的末端(如果它比当前视图大),我将如何在ios6中制作和添加折线?
例如,假设我有一条长达一英里的折线,并希望地图保持在一个constand distacne equoomlent放大:

MKCoordinateRegion userRegion = MKCoordinateRegionMakeWithdistance(self.currentLocation.coordinate,1000,1000);    [self.mainMap setRegion:[self.mainMap regionThatFits:userRegion] animated:YES];

我该怎么做呢?请提供我可以下载的完整代码示例或示例项目!

解决方法 MKMapPoint * malloc / assign:

MKMapPoint *newPoints = malloc((sizeof (MKMapPoint) * nbPoints));newPoints[index] = varMKMapPoint;free(newPoints);

MKpolyline必须根据您的需要进行初始化:

MKpolyline *polyline  = [MKpolyline polylineWithPoints:newPoints count:nbPoints];[self.mapVIEw addOverlay:polyline];

要显示您的MKpolyline,您必须使用vIEwForOverlay:

- (MKOverlayVIEw *)mapVIEw:(MKMapVIEw *)mapVIEw vIEwForOverlay:(ID <MKOverlay>)overlay{    MKOverlayVIEw* overlayVIEw = [[MKOverlayVIEw alloc] initWithOverlay:overlay];            if([overlay isKindOfClass:[MKpolyline class]]) {        MKpolylineVIEw *backgroundVIEw = [[MKpolylineVIEw alloc] initWithpolyline:overlay];        backgroundVIEw.fillcolor = [UIcolor blackcolor];        backgroundVIEw.strokecolor = backgroundVIEw.fillcolor;        backgroundVIEw.linewidth = 10;        backgroundVIEw.lineCap = kCGlineCapSquare;        overlayVIEw = backgroundVIEw;    }    return overlayVIEw;}

要使用此方法,您必须将您的点转换为CLLocation,它将返回您将设置为mapVIEw的MKCoordinateRegion:

- (MKCoordinateRegion)getCenterRegionFromPoints:(NSArray *)points{    CLLocationCoordinate2D topleftCoordinate;    topleftCoordinate.latitude = -90;    topleftCoordinate.longitude = 180;    CLLocationCoordinate2D bottomrightCoordinate;    bottomrightCoordinate.latitude = 90;    bottomrightCoordinate.longitude = -180;    for (CLLocation *location in points) {        topleftCoordinate.longitude = fmin(topleftCoordinate.longitude,location.coordinate.longitude);        topleftCoordinate.latitude = fmax(topleftCoordinate.latitude,location.coordinate.latitude);        bottomrightCoordinate.longitude = fmax(bottomrightCoordinate.longitude,location.coordinate.longitude);        bottomrightCoordinate.latitude = fmin(bottomrightCoordinate.latitude,location.coordinate.latitude);    }    MKCoordinateRegion region;    region.center.latitude = topleftCoordinate.latitude - (topleftCoordinate.latitude - bottomrightCoordinate.latitude) * 0.5;    region.center.longitude = topleftCoordinate.longitude + (bottomrightCoordinate.longitude - topleftCoordinate.longitude) * 0.5;    region.span.latitudeDelta = fabs(topleftCoordinate.latitude - bottomrightCoordinate.latitude) * 1.2; //2    region.span.longitudeDelta = fabs(bottomrightCoordinate.longitude - topleftCoordinate.longitude) * 1.2; //2//    NSLog(@"zoom lvl : %f,%f",region.span.latitudeDelta,region.span.latitudeDelta);    return region;}

希望这可以帮助.

总结

以上是内存溢出为你收集整理的iphone – MapKit Polyline自定义缩放?全部内容,希望文章能够帮你解决iphone – MapKit Polyline自定义缩放?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1081746.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-27
下一篇2022-05-27

发表评论

登录后才能评论

评论列表(0条)

    保存