1
我在MKMapView中繪製了一串MKPolygon。其中一些躺在彼此頂部。我如何將選定的多邊形帶到頂部/前部?將MKPolygon帶到前面
我在MKPolygonView試圖bringSubviewToFront:
我從多邊形層創建:
MKPolygonView *view = (MKPolygonView *)[self.mapView viewForOverlay:polygon];
view.strokeColor = [UIColor orangeColor];
[self.mapView bringSubviewToFront:view];
SOLUTION:
我刪除
MKPolygonView *view = (MKPolygonView *)[self.mapView viewForOverlay:polygon];
view.strokeColor = [UIColor orangeColor];
[self.mapView bringSubviewToFront:view];
,取而代之的是什麼克雷格建議:
[self.mapView insertOverlay:polygon atIndex:self.mapView.overlays.count];
然後調用MKMapKit委託mapView:viewForOverlay:
然後我處理顏色的變化有:
- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay {
if ([overlay isKindOfClass:[MKPolygon class]] && !((MKPolygon *)overlay).isSelected) {
MKPolygonView* aView = [[MKPolygonView alloc] initWithPolygon:(MKPolygon*)overlay];
aView.fillColor = [[UIColor cyanColor] colorWithAlphaComponent:0.2];
aView.strokeColor = [UIColor yellowColor];
aView.lineWidth = 3;
return aView;
}
else if ([overlay isKindOfClass:[MKPolygon class]] && ((MKPolygon *)overlay).isSelected) {
MKPolygonView* aView = [[MKPolygonView alloc] initWithPolygon:(MKPolygon*)overlay];
aView.fillColor = [[UIColor cyanColor] colorWithAlphaComponent:0.2];
aView.strokeColor = [UIColor orangeColor];
aView.lineWidth = 3;
return aView;
}
}
恐怕這是行不通的。如果沒有這行代碼,如果我選擇頂部的多邊形,則筆觸顏色確實會改變。使用代碼時,頂部多邊形不會變爲可見(筆劃顏色不會更改,無論是將其放在哪個位置都無法顯示或筆劃顏色不起作用/擋板)。 – Padin215 2013-03-19 13:52:22
更多信息:我保留一個指向「選定」多邊形的指針(即橙色邊框顏色)。當我嘗試「取消選擇」(即將其更改爲黃色)時,當我嘗試更改保存的多邊形時出現錯誤:「原因:」 - [CALayer levelsOfDetail]:無法識別的選擇器發送到實例0x91d1620'' – Padin215 2013-03-19 13:55:26
I已經更新了我的答案。 – Craig 2013-03-19 17:28:56