2013-03-18 38 views
0

我有地图视图,我喜欢使用覆盖方法绘制线,我添加了两个位置的纬度和经度,当我按下按钮时画线但当我第二次按下新的我提供的坐标paire和新的线图覆盖,但以前的覆盖路径已消失,但我需要在同一地图上的previou路径也坚持覆盖线在iOS6中的地图视图

这里是我的代码。

- (IBAction)refreshMapMethod:(id)sender 

{ 


int kk=[[NSUserDefaults standardUserDefaults]integerForKey:@"ham"]; 




    if (kk==1) 
    { 
     CLLocationCoordinate2D coordinateArray[2]; 
     coordinateArray[0] = CLLocationCoordinate2DMake(12.915181,+77.626055); 
     coordinateArray[1] = CLLocationCoordinate2DMake(12.892156, +77.582188); 
     self.routeLine = [MKPolyline polylineWithCoordinates:coordinateArray count:2]; 
     [self.myMapView setVisibleMapRect:[self.routeLine boundingMapRect]]; 

     [self.myMapView addOverlay:self.routeLine]; 
     [[NSUserDefaults standardUserDefaults]setInteger:2 forKey:@"ham" ]; 


    } 


    if (kk==2) 
    { 
     CLLocationCoordinate2D coordinateArray[2]; 
     coordinateArray[0] = CLLocationCoordinate2DMake(12.892156,+77.426055); 
     coordinateArray[1] = CLLocationCoordinate2DMake(12.892156, +77.582188); 
     self.routeLine = [MKPolyline polylineWithCoordinates:coordinateArray count:2]; 
     [self.myMapView setVisibleMapRect:[self.routeLine boundingMapRect]]; 

     [self.myMapView addOverlay:self.routeLine]; 
     [[NSUserDefaults standardUserDefaults]setInteger:3 forKey:@"ham" ]; 


    } 
    if (kk==3) 
    { 
     CLLocationCoordinate2D coordinateArray[2]; 
     coordinateArray[0] = CLLocationCoordinate2DMake(12.892156, +77.382188); 
     coordinateArray[1] = CLLocationCoordinate2DMake(12.892156, +77.282188); 
     self.routeLine = [MKPolyline polylineWithCoordinates:coordinateArray count:2]; 
     [self.myMapView setVisibleMapRect:[self.routeLine boundingMapRect]]; 

     [self.myMapView addOverlay:self.routeLine]; 
     [[NSUserDefaults standardUserDefaults]setInteger:3 forKey:@"ham" ]; 


    } 



    CLLocationCoordinate2D zoomLocation; 
    zoomLocation.latitude= 12.915181; 
    zoomLocation.longitude=77.626055; 

    MKCoordinateRegion viewRegion=MKCoordinateRegionMakeWithDistance(zoomLocation, 3*METERS_PER_MILE, 3*METERS_PER_MILE); 

    [self.myMapView setRegion:viewRegion animated:YES]; 


[[NSUserDefaults standardUserDefaults]setInteger:2 forKey:@"change" ]; 


} 

调用覆盖方法..

-(MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id<MKOverlay>)overlay 


{ 

    if(overlay == self.routeLine) 
    { 
     if(nil == self.routeLineView) 
     { 
      self.routeLineView = [[MKPolylineView alloc] initWithPolyline:self.routeLine]; 



      self.routeLineView.fillColor = [UIColor redColor]; 
      self.routeLineView.strokeColor = [UIColor redColor]; 
      self.routeLineView.lineWidth = 5; 

     } 

     return self.routeLineView; 
    } 

    return nil; 
} 

请给我提供在TYE相同方式或其他任何替代方式的解决方案。

比你。

回答

1

这是因为您只允许viewForOverlay函数返回self.routeline的视图,并且只有其中之一。每拨打viewForOverlay将会返回零,因此不会被绘制。你需要做的是绘制所有的覆盖。

-(MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id<MKOverlay>)overlay 
{ 
    MKPolylineView* routeLineView = [[MKPolylineView alloc] initWithPolyline:(MKPolyLine)overlay]; 
    routeLineView.fillColor = [UIColor redColor]; 
    routeLineView.strokeColor = [UIColor redColor]; 
    routeLineView.lineWidth = 5; 

    return routeLineView; 
} 

你可能需要做一些更多的东西,如实际检查的覆盖是一个折线第一,但是这应该足以让你去。