ios – 新的foursquare场地详细地图

ios – 新的foursquare场地详细地图,第1张

概述我真的很喜欢foursquare设计的场地详细视图。特别是地图与场地位置在“头”的视图…它是如何做的?细节显然是一些uiscrollview(也许uitableview?)和它后面(在标题)有一个地图,所以当你向上滚动地图是beeing被揭开,因为滚动视图反d…有谁有一个想法如何做到这一点? 这是我设法复制的方式: 您需要一个具有UIScrollView的UIViewController作为其视图 我真的很喜欢foursquare设计的场地详细视图。特别是地图与场地位置在“头”的视图…它是如何做的?细节显然是一些uiscrollvIEw(也许uitablevIEw?)和它后面(在标题)有一个地图,所以当你向上滚动地图是beeing被揭开,因为滚动视图反d…有谁有一个想法如何做到这一点?解决方法 这是我设法复制的方式:

您需要一个具有UIScrollVIEw的UIVIEwController作为其视图。然后,您添加到scrollvIEw的UIVIEw的内容应如下所示:

– MKMapVIEw的框架具有负y位置。在这种情况下,我们只能在默认状态(拖拽之前)看到100pt的地图。
– 您需要在MKMapVIEw实例上禁用缩放和滚动。

那么诀窍就是向下移动MKMapVIEw的中心坐标,当你向下拖动时,调整它的中心位置。

为此,我们计算1点表示为三角纬度,以便我们知道在屏幕上拖动x点时应该移动地图的中心坐标:

- (voID)vIEwDIDLoad {    [super vIEwDIDLoad];    UIScrollVIEw* scrollVIEw = (UIScrollVIEw*)self.vIEw;    [scrollVIEw addSubvIEw:contentVIEw];    scrollVIEw.contentSize = contentVIEw.frame.size;    scrollVIEw.delegate = self;    center = CLLocationCoordinate2DMake(43.6010,7.0774);    mapVIEw.region = MKCoordinateRegionMakeWithdistance(center,1000,1000);    mapVIEw.centerCoordinate = center;    //We compute how much latitude represent 1point.    //so that we kNow how much the center coordinate of the map should be moved     //when being dragged.    CLLocationCoordinate2D referenceposition = [mapVIEw convertPoint:CGPointMake(0,0) toCoordinateFromVIEw:mapVIEw];    CLLocationCoordinate2D referenceposition2 = [mapVIEw convertPoint:CGPointMake(0,100) toCoordinateFromVIEw:mapVIEw];    deltaLatFor1px = (referenceposition2.latitude - referenceposition.latitude)/100;}

一旦这些属性被初始化,我们需要实现uiscrollviewdelegate的行为。当我们拖动时,我们将以点表示的移动转换为纬度。然后,我们使用这个值的一半移动地图的中心。

- (voID)scrollVIEwDIDScroll:(UIScrollVIEw *)theScrollVIEw {    CGfloat y = theScrollVIEw.contentOffset.y;    // dID we drag ?    if (y<0) {        //we moved y pixels down,how much latitude is that ?        double deltaLat = y*deltaLatFor1px;        //Move the center coordinate accordingly         CLLocationCoordinate2D newCenter = CLLocationCoordinate2DMake(center.latitude-deltaLat/2,center.longitude);        mapVIEw.centerCoordinate = newCenter;    }}

你得到与foursquare应用程序相同的行为(但更好的是:在foursquare应用程序中,地图更新者倾向于跳跃,在这里,改变中心是顺利完成的)。

总结

以上是内存溢出为你收集整理的ios – 新的foursquare场地详细地图全部内容,希望文章能够帮你解决ios – 新的foursquare场地详细地图所遇到的程序开发问题。

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

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

原文地址: https://outofmemory.cn/web/1071000.html

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

发表评论

登录后才能评论

评论列表(0条)

保存