- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我必须在 MKMapView 上显示一个 MKMapRoute,它必须显示在我 map 上的特定区域,而不是在中心,而是在顶部区域。它必须放在一个大约 80 点高的“框架”中。
我以为我可以通过使用MKMapView的方法来实现这一点
- (MKMapRect)mapRectThatFits:(MKMapRect)mapRect edgePadding:(UIEdgeInsets)insets
但我遇到了一些奇怪的事情。准确地说,如果我使用这段代码:
//obj is the returned mkroute object.
MKRoute *rout = obj;
MKPolyline *line = [rout polyline];
MKMapRect boundingMapRect = [line boundingMapRect];
MKMapRect fittedRect = [self.mapView mapRectThatFits:[line boundingMapRect]
edgePadding:UIEdgeInsetsMake( 100, 0, 0, 0)];
MKCoordinateRegion r = MKCoordinateRegionForMapRect(fittedRect);
[self.mapView setRegion: r animated:YES];
结果在下面的截图中可见:
但是,如果我通过更改我之前代码片段的第四行将边缘插入设置为 (0,0,0,0)
:
MKMapRect fittedRect = [self.mapView mapRectThatFits:[line boundingMapRect]
edgePadding:UIEdgeInsetsMake( 100, 0, 0, 0)];
结果是这样的:
正如您可以清楚地看到的那样,偏移量从顶部改变了 50(而不是 100)点。当我使用 MKMapRegion 的跨度纬度和经度增量或更改设备屏幕时,事情似乎变得更加奇怪。
现在,我的目标只是告诉 mapView 在一个框架中绘制这条路线,比如“距离顶部 64 点,高度为 80 点,宽度为 320 点”,我我找不到一种简单的方法来做到这一点,恐怕我错过了一些东西。我不想通过改变区域的纬度来玩,因为内容大小可能会有所不同(可能会有更小或更大的路线显示)。我错过了什么,什么可以是一种简单的方法来做到这一点?为什么没有正确计算插图?
最佳答案
通过指定仅顶部填充, map View 会尝试在不扭曲 map 的情况下并根据它可以呈现的缩放级别最大化剩余空间中叠加层的显示大小。所以你不会接近你想要的宽度和高度。
如果您计算并指定所有边的填充,而不仅仅是顶部,您可以更好地控制叠加层的显示位置。
但是, map View 仍会根据它可以呈现的内容调整实际显示的区域,而不会扭曲 map 等。但结果应该更接近您想要的。
根据你上一段中的这句话:
my aim is simply to tell mapView to draw that route in a frame of say "64 points from the top and with an height of 80 points and a width of 320 points"
这是一个如何接近该结果的示例:
MKRoute *rout = obj;
MKPolyline *line = [rout polyline];
CGFloat desiredDistanceFromTop = 64.0;
CGFloat desiredWidth = 320.0;
CGFloat desiredHeight = 80.0;
CGFloat topPadding = desiredDistanceFromTop;
CGFloat leftPadding = (self.mapView.frame.size.width - desiredWidth) / 2.0;
CGFloat rightPadding = leftPadding;
CGFloat bottomPadding = self.mapView.frame.size.height
- topPadding
- desiredHeight;
UIEdgeInsets edgeInsets =
UIEdgeInsetsMake(topPadding, leftPadding, bottomPadding, rightPadding);
[self.mapView setVisibleMapRect:line.boundingMapRect
edgePadding:edgeInsets
animated:YES];
另外,请注意,没有必要将 map 矩形转换为区域或自己计算“拟合”矩形/区域,因为:
setVisibleMapRect
代替 setRegion
。setVisibleMapRect
和 setRegion
都将自己计算给定请求的矩形/区域的“拟合”矩形/区域。关于ios - 如何正确偏移 MKMapRect,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23127795/
我正在尝试从第 4 到 9 页以及第 12 和 13 页上的单元格中清除所有内容(包括图像)。我有以下代码,但它正在清除第 3-9 和 12-15 页中的内容,我不知道为什么。 有什么想法吗? Sub
有没有办法增加极坐标图刻度标签(θ)的填充/偏移? import matplotlib import numpy as np from matplotlib.pyplot import figure,
我正在调用本地 API 并尝试以分页 样式进行操作。我有 n 张图片,我想将它们分成 n/4 行(每行 4 张图片)。因此,我正在调用我的 API,images/count,offset。但不知何故,
我的问题解释起来有点棘手,但无论如何我都会尝试。我有两个水平选项卡,当您单击它们时,会打开一个文本框内容。当他们被点击时,我试图“关注”他们。我在网上找到了很多资料,但除了我在下面显示的这段代码外,没
所以我有一个 float 的 div,我需要它始终向右 200 像素,并填充窗口的其余部分。有没有某种跨浏览器兼容的方法,我可以在不借助 javascript 的情况下使宽度填满页面的其余部分? 最佳
我有以下片段 $('html,body').animate({scrollTop: $('#menu').offset().top}, 'slow'); 单击链接时,我希望浏览器从#menu div
我目前正在为我的应用程序使用 JASidePanel,并且我有一个 UITableViewcontroller 和一个 UIRefreshControl 作为它的 ViewController 之一。
给出以下代码: imshow(np.arange(16*16).reshape(16,16)) cb = colorbar() cb.set_label("Foo") cb.set_ticks([0,
我是编程新手,我认为 VBA 是一个很好的起点,因为我在 Excel 中做了很多工作。 我创建了一个宏,它从输入框中获取一个整数(我一直使用 2、3 和 4 来测试),并创建该数字的一组 4 层层次结
我在 PHP 中有一个 unix 时间戳: $timestamp = 1346300336; 然后我有一个我想要应用的时区的偏移量。基本上,我想应用偏移量并返回一个新的 unix 时间戳。偏移量遵循这
演示:http://jsfiddle.net/H45uY/6/ 我在这里想做的是将 的左上角设为跟随鼠标。代码在没有段落的情况下工作正常(请参阅上面的演示),但是当您添加段落时,被向上推,鼠标位于盒
假设我们有两个由无符号长(64 位)数组表示的位图。我想使用特定的移位(偏移)合并这两个位图。例如,将位图 1(较大)合并到位图 2(较小)中,起始偏移量为 3。偏移量 3 表示位图 1 的第 3 位
通过在 pageViewController 中实现 tableView,tableView 与其显示的内容不一致。对此最好的解决办法是什么? 最佳答案 如果您的 TableView 是 View C
我设置了一个在 nib 中显示地点信息的地点配置文件。当我在标准屏幕流程中推送此 View 时,它工作正常。但是,当我从另一个选项卡推送此 View 时,UINavigationBar 似乎抵消了它,
如果我想选择 5 条记录,我会这样做: SELECT * FROM mytable LIMIT 5 如果我想添加偏移量,我会这样做: SELECT * FROM mytable OFFSET 5 LI
我有一个应用程序,其中某些 View 需要全屏,而其他 View 不需要全屏。在某些情况下,我希望背景显示在状态栏下方,所以我在 View 加载时使用它来使 Activity 全屏显示: window
在下图中,我进行绘制,结果位于 A 点,就在我手指接触的地方。 如何使图像显示在实际触摸上方约 40pt。 (二) 我正在使用经典的 coreGraphic UITouch 代码,如下所示: - (v
只要键盘处于事件状态,我就会尝试偏移 UITextField,效果很好,直到我尝试了表情符号布局。有没有办法检测键盘输入的类型,以便找出高度差?谢谢 最佳答案 不是使用 UIKeyboardDidSh
这是我的 Swift 代码 (AppDelegate.swift): var window: UIWindow? var rootViewController :UIViewController? f
我有一个 div 作为绝对定位的 body 的直接子节点,其 css 属性定义如下: div[id^="Container"] { display: block; position: a
我是一名优秀的程序员,十分优秀!