【发布时间】:2014-04-19 00:06:19
【问题描述】:
我正在做一个使用 Mapkit 框架的项目。最初有一张佛罗里达州的地图,上面有许多注释和圆形叠加层,显示了哪些地区可以收货。我想要所有这些,以及一个 MKPolygon 来突出整个州。 (这是通过使用所有坐标的 XML 文件和 Objective-C 中的 XMLParser 来完成的)
MKCircleView 覆盖所有显示都很好,我猜这是因为它们都是同一类型。但是,当我也尝试实现 MKPolygon 视图时,它不允许我这样做。
//Region for fort lauderdale delivery area overlay
MKCoordinateRegion fortLauderdale;
fortLauderdale.center.latitude = FTL_LATITUDE;
fortLauderdale.center.longitude = FTL_LONGITUDE;
fortLauderdale.span.latitudeDelta = SPAN_VALUE;
fortLauderdale.span.longitudeDelta = SPAN_VALUE;
//Create a circle for fort lauderdale area
MKCircle *fortLauderdaleCircle= [MKCircle circleWithCenterCoordinate:fortLauderdale.center radius:5000];
//2KM or 1.24 miles
[self.mapView addOverlay:fortLauderdaleCircle];
//Region for miami delivery area overlay
MKCoordinateRegion miami;
miami.center.latitude = MIA_LATITUDE;
miami.center.longitude = MIA_LONGITUDE;
miami.span.latitudeDelta = SPAN_VALUE;
miami.span.longitudeDelta = SPAN_VALUE;
//Create a circle for miami area
MKCircle *miamiCircle = [MKCircle circleWithCenterCoordinate:miami.center radius:5000];
//2KM or 1.24 miles
[self.mapView addOverlay:miamiCircle];
然后在实现它们的方法中我有这个:
-(MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id<MKOverlay>)overlay
{
MKCircleView *circleView = [[MKCircleView alloc]initWithCircle:overlay];
circleView.fillColor = [[UIColor cyanColor] colorWithAlphaComponent:0.5];
circleView.strokeColor =[[UIColor blueColor] colorWithAlphaComponent:0.6];
circleView.lineWidth = 1 ;
return circleView;
//This is the code for the polygon view but I don't know how
//to return it without run-time errors
//MKPolygonView *polygonView = [[MKPolygonView alloc] initWithPolygon:overlay];
//polygonView.fillColor = [[UIColor greenColor] colorWithAlphaComponent:0.2];
//polygonView.strokeColor = [[UIColor greenColor] colorWithAlphaComponent:0.6];
//polygonView.lineWidth = 1;
//return polygonView;
}
这看起来已经很糟糕了,因为我在方法中调用了两个 return 语句,但这就是我问这个问题的原因。我不认为错误在于我解析 XML 数据的方式,因为在实现之前没有错误。谢谢
【问题讨论】:
-
Return 意味着一切 Return 之后将永远不会被调用...
-
是的,这是真的。我从一开始就知道这是一个错误。但据我所知,如果不使用该方法,我不知道有任何其他方法可以实现覆盖。这就是实现圆形和多边形覆盖的方式。但似乎只有如果它们是相同的类型就可以了。除了迈阿密和劳德代尔堡,我还有其他 7 个城市有圆形叠加层,它们都显示得很好。
-
我添加了两个返回语句以表明我希望显示所有圆形叠加层以及多边形叠加层以突出显示整个佛罗里达州。
标签: ios objective-c mapkit