2013-02-21 19 views
5

MKMapView numaralı bir ürünüm var, bu çok garip bir soruna sahip. Oturumların noktaları arasında bir dosyaya kaydederek ve viewDidLoad numaralı bindirmeyi yükleyerek oturumlar arasında saklanan bir MKOverlay var.MKOverlay, her şeyi tuhaf durumlarda yalnızca ios5 ile kaplıyor mu?

Adımlar

  1. Ben bir bindirme tarafından yerleştirilmiştir alır harita üzerinde harita her şeyi MKOverlay ekledikten sonra bir MKOverlay ikinci veya üçüncü kaçak durumunda MKMapView
  2. eklemek: Yani sorun şu eklediğim ile aynı renk . Haritadaki her şey, görünüm yüklendiğinde görebileceğiniz haritanın görünümü hariç.

Diğer garip şeyler: mapView.showsUserLocation Bu sorun yalnızca iOS5 oluşursa gerçek

  • olarak ayarlandığında

    1. Bu sorun yalnızca oluşur. Her şey iOS6'da düzgün çalışıyor.
    2. Renkli yer paylaşımını uzaklaştırırsanız, sayfasının görünür kısmını, haritayı yakınlaştırdığınız yeni düzeyde doldurmak için haritaya sığdırın.

    Bu adam benim çözümüm işe yaramadı, ancak aynı problemi yaşıyor. İşte

    Trouble with overlay using MKPolyline & MKPolylineView

    olan kodumu bazıları:

    görünüm yükler, ben onlar eklenir hemen önce Çoklu çizgi diziye ekleniyor koordinatları açmış zaman

    Kodu adlı

    -(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; 
    } 
    
    ve her şey yolunda ve güzel! Sorun ne olduğu hakkında Herhangi bir fikir: Burada
    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]; 
    

    yerleşimi görünmüyor ve harita üzerinde tarafına kullanıcı tava ne olur bir resim mi?

  • cevap

    1

    DequeueReusableAnnotationViewWithIdentifier aracını kullanıyorsunuz, ancak dequeueReusableAnnotationViewWithIdentifier öğesinin sonucu sıfır olduğunda yalnızca pinView'e bir açıklama atamanız yeterlidir.

    genellikle varolan MKPinAnnotationView örneğini dönecek yöntem olarak, bu yerine olmalıdır:

    MKPinAnnotationView *pin = (MKPinAnnotationView *) [mapView dequeueReusableAnnotationViewWithIdentifier:defaultPinID]; 
    if (pin == nil) { 
        pin = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:defaultPinID]; 
    } else { 
        pin.annotation = annotation; 
    } 
    
    +0

    Sorun hala oluşuyor .... – Shredder2794

    +0

    Hm, ne zaman harita ve çizgi oluşturuyorsunuz? Yalnızca kullanıcı konumu açık olduğunda gerçekleştiğini söylediğinden, haritanın ve görünümün görünümü sırasında haritayı ve polilleri oluşturmayı deneyin, ardından haritanın kapsayıcı görünümüne geçin, ardından viewDidAppear sırasında haritanın showUserLocation öğesini YES olarak ayarlayın. – poetmountain

    +0

    Bu çalışır! Çok teşekkür ederim! Cevabınızı bu problemle gelecekteki insanlar için bana bu yorumlarda verdiğiniz cevaba uyacak şekilde düzenlemelisiniz! – Shredder2794

    0

    Bu sorun olabilir: mapview kullanıcının mevcut konumu için görünümü erişmeye çalıştığında, sen geçiyoruz senin özelleştirilmiş görünüm

    Bunu varolan uygulamanıza eklemeyi deneyin. Not: Bu, kaplama görünümü sorunu olmayabilir.

    Saygılarımızla.

    +0

    Sorun hala oluşuyor ... – Shredder2794

    İlgili konular