gpt4 book ai didi

objective-c - 如何按固定百分比扩展 MKMapRect?

转载 作者:太空狗 更新时间:2023-10-30 03:22:55 25 4
gpt4 key购买 nike

我想得到一个在所有方向上都比当前 visibleMapRect 大 10-20% 的结果 MKMapRect。如果这是一个 CGRect,我将使用具有负 x 和 y 值的 CGRectInset,为我提供一个逆插图(即更大的矩形)。不幸的是,MKMapInset 不支持负插入值,所以它不是那么容易。

如果 map 矩形的值是可识别的单位,但原点 x 和 y 值大约为 4.29445e+07,并且宽度/高度为 2500-3000,这可能会更容易。

我从编写一个类别到手动执行此操作大约需要 10 秒,但我想首先确保我没有遗漏任何内容。有没有更简单的方法来扩展 MKMapRect?

最佳答案

在 iOS7 中,rectForMapRect:mapRectForRect: 已被弃用,现在是 MKOverlayRenderer 类的一部分。我宁愿推荐使用 MapView mapRectThatFits: edgePadding: 方法。这是一个示例代码:

MKMapRect visibleRect = self.mapView.visibleMapRect;
UIEdgeInsets insets = UIEdgeInsetsMake(50, 50, 50, 50);
MKMapRect biggerRect = [self.mapView mapRectThatFits:visibleRect edgePadding:insets];

2017 年最新的 Swift...

func updateMap() {

mkMap.removeAnnotations(mkMap.annotations)
mkMap.addAnnotations(yourAnnotationsArray)

var union = MKMapRectNull

for p in yourAnnotationsArray {
// make a small, say, 50meter square for each
let pReg = MKCoordinateRegionMakeWithDistance( pa.coordinate, 50, 50 )
// convert it to a MKMapRect
let r = mkMapRect(forMKCoordinateRegion: pReg)

// union all of those
union = MKMapRectUnion(union, r)

// probably want to turn on the "sign" for each
mkMap.selectAnnotation(pa, animated: false)
}

// expand the union, using the new #edgePadding call. T,L,B,R
let f = mkMap.mapRectThatFits(union, edgePadding: UIEdgeInsetsMake(70, 0, 10, 35))

// NOTE you want the TOP padding much bigger than the BOTTOM padding
// because the pins/signs are actually very tall

mkMap.setVisibleMapRect(f, animated: false)

}

关于objective-c - 如何按固定百分比扩展 MKMapRect?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14243571/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com