私はMKMapView
を持っていますが、これは非常に奇妙な問題です。説明するのは難しいです。 オーバーレイのポイントをファイルに保存し、オーバレイをviewDidLoad
にロードすることによってセッション間で保存されるMKOverlay
があります。そこでここでは問題があります:MKOverlayはios5でのみ奇妙な状況のすべてをオーバーレイしますか?
ステップ
- 私は、地図上の すべてがのオーバーレイによってオーバーレイますマップに
MKOverlay
を追加した後、第2または3回目でMKMapView
- に
MKOverlay
を追加します私が追加したのと同じ色の です。地図上のすべてのものは、ビューがロードされたときに表示されるマップの ビューを除いて表示されます。
その他の奇妙な:
- この問題だけ
mapView.showsUserLocation
がtrue - に設定されている場合、この問題がのみ
iOS5
で発生発生します。iOS6
ですべて正常に動作します。 - 色付きオーバーレイを縮小すると、表示されている部分の幅が になります。ズームアウトした新しいレベルで地図を塗りつぶします。
この男は同じ問題を抱えていますが、彼の解決策は私のためには機能しませんでした。ここで
Trouble with overlay using MKPolyline & MKPolylineView
私のコードの一部です:コード際にビューのロードと呼ばれる
-(MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation {
MKPinAnnotationView *pinView = nil; //switch this to MKAnnotationView and use .image property if pins need to be images
if(annotation == self.startingPin || annotation == self.endingPin){
static NSString *defaultPinID = @"com.MagnusDevelopment.pin";
pinView = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:defaultPinID];
if (pinView == nil)pinView = [[MKPinAnnotationView alloc]initWithAnnotation:annotation reuseIdentifier:defaultPinID];
pinView.canShowCallout = YES;
pinView.animatesDrop = TRUE;
if(annotation == self.startingPin){
//starting pin
pinView.pinColor = MKPinAnnotationColorGreen;
}else{
//ending pin
pinView.pinColor = MKPinAnnotationColorRed;
}
}
return pinView;
}
- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay
{
MKPolylineView *aView = [[MKPolylineView alloc] initWithPolyline:(MKPolyline *)overlay];
aView.lineWidth = 7.0;
aView.strokeColor = [[UIColor blueColor] colorWithAlphaComponent:0.6];
return aView;
}
、私は、彼らが追加される直前に、ポリラインの配列に追加されている座標を記録してきたし、すべてが上品で素敵です!問題が何であるかについての任意のアイデアを :ここ
NSInteger numberOfSteps = pointsArray.count;
NSLog(@"number of steps: %i",numberOfSteps);
CLLocationCoordinate2D coordinates[numberOfSteps];
for (NSInteger index = 0; index < numberOfSteps; index++) {
CLLocation *location = [pointsArray objectAtIndex:index];
CLLocationCoordinate2D coordinate = location.coordinate;
coordinates[index] = coordinate;
}
MKPolyline *polyLine = [MKPolyline polylineWithCoordinates:coordinates count:numberOfSteps];
[self.mainMap addOverlay:polyLine];
は、オーバーレイが表示され、マップ上の側へのユーザーパンときに何が起こるかの写真ですか?
問題はまだ発生しています.... – Shredder2794
地図、ラインを作成していますか?ユーザーの場所がオンになっている場合にのみ表示されるので、マップのコンテナビューのviewWillAppear中にマップとポリラインを作成してから、viewDidAppear中にマップのshowsUserLocationをYESに設定してみてください。 – poetmountain
これは動作します!どうもありがとうございます!この問題を抱える将来の人々のために、これらのコメントに私が与えた答えに合わせて、あなたの答えを編集する必要があります。 – Shredder2794