我使用addOverlay:方法为我的MKMapView添加了一个叠加层。使用MKPolyline制作覆盖层并使用MKPolylineView进行描边。笔触颜色为蓝色,alpha值为0.7。
当视图最初加载时,正确绘制叠加层,但叠加层的周围区域也是蓝色的...... 当我捏&缩小,蓝色区域仍然存在,但它会调整到我的新缩放级别。这有点难以描述......但基本上我有一个小的矩形“法线贴图”被困在一个较大的蓝色矩形内。
当我缩小以查看整个国家/地区以及当我放大所有内容时,它会消失。
我认为这可能是因为我没有正确实现MKOverlayProtocol?
如果有人有任何想法,请按我的方式抛弃......
编辑:
以下是创建MKPolyline和委托方法的代码。
-(MKPolyline *)bluePolyline
{
CLLocationCoordinate2D bluePoints[16];
bluePoints[0] = CLLocationCoordinate2DMake(27.526483, -97.882454);
bluePoints[1] = CLLocationCoordinate2DMake(27.526407, -97.887883);
bluePoints[2] = CLLocationCoordinate2DMake(27.527244, -97.887905);
bluePoints[3] = CLLocationCoordinate2DMake(27.527282, -97.887304);
bluePoints[4] = CLLocationCoordinate2DMake(27.527577, -97.887304);
bluePoints[5] = CLLocationCoordinate2DMake(27.527596, -97.885727);
bluePoints[6] = CLLocationCoordinate2DMake(27.530194, -97.88577); //Seale St. & Corrale Ave.
bluePoints[7] = CLLocationCoordinate2DMake(27.530213, -97.883892); //Retama & Corral Ave.
bluePoints[8] = CLLocationCoordinate2DMake(27.530279,-97.881907);
bluePoints[9] = CLLocationCoordinate2DMake(27.530337,-97.880201);
bluePoints[10] = CLLocationCoordinate2DMake(27.530356,-97.877959);
bluePoints[11] = CLLocationCoordinate2DMake(27.52753,-97.877884); //West C Ave. & Armstrong
bluePoints[12] = CLLocationCoordinate2DMake(27.527492,-97.878367);
bluePoints[13] = CLLocationCoordinate2DMake(27.527397,-97.878817);
bluePoints[14] = CLLocationCoordinate2DMake(27.527349,-97.882454);
bluePoints[15] = CLLocationCoordinate2DMake(27.526483, -97.882453);
if(bluePolyline == nil)
{
bluePolyline = [MKPolyline polylineWithCoordinates:bluePoints count:16];
}
bluePolyline.title = @"Blue Route";
_bluePolyline = bluePolyline;
return _bluePolyline;
}
- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay
{
MKPolylineView *aView = [[MKPolylineView alloc] initWithPolyline:(MKPolyline *)overlay];
//aView.fillColor = [[UIColor cyanColor] colorWithAlphaComponent:0.2];
aView.strokeColor = [[UIColor blueColor] colorWithAlphaComponent:0.6];
aView.lineWidth = 10;
return aView;
}
答案 0 :(得分:0)
我最终通过实施MKOverlay
协议方法解决了我的问题:
- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay;
像这样:
- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay
{
MKPolylineView *aView = [[MKPolylineView alloc] initWithPolyline:(MKPolyline *)overlay];
if(overlay.title == @"Blue Route")
{
aView.lineWidth = 7.0;
aView.strokeColor = [[UIColor blueColor] colorWithAlphaComponent:0.6];
}
if(overlay.title == @"Gold Route-A")
{
aView.lineWidth = 10.0;
aView.strokeColor = [[UIColor yellowColor] colorWithAlphaComponent:0.6];
}
if(overlay.title == @"Gold Route-B")
{
aView.lineWidth = 7.0;
aView.strokeColor = [[UIColor yellowColor] colorWithAlphaComponent:0.6];
}
return aView;
}
每个叠加层都是在我的模型中的其他地方创建的。