2012-01-30 15 views
6

के लिए MKOverlay का समन्वय बदलें मेरे पास मानचित्र पर एक ओवरले है, और मैं इसके निर्देशांक बदलना चाहता हूं। यह निष्पक्ष रूप से करने के लिए मैं दृश्य में बदलाव के बाद setNeedsDisplayInMapRect: विधि को कॉल करने जा रहा हूं।MKOverlayView

मैं सिर्फ fillColor बदलकर इस परीक्षण किया है और यह ठीक काम करता है:

overlayView.fillColor = [[UIColor greenColor] colorWithAlphaComponent:0.3]; 
[overlayView setNeedsDisplayInMapRect:mapView.visibleMapRect]; 

हालांकि मैं उचित रूप में भी बदलने के लिए केंद्र मेरी ओवरले दृश्य के निर्देशांक की कोशिश कर रहा एक ईंट की दीवार पर पहुंच जाते हैं (जो एक MKCircleViewMKCircle के साथ)। MKAnnotation में एक विधि है, जो MKCircle अनुरूप है, जिसे setCoordinate: कहा जाता है - जो मुझे चाहिए जैसा लगता है। दुर्भाग्यवश हालांकि, MKCircleView में circle संपत्ति केवल पढ़ने योग्य है। इसके अलावा MKOverlayView में संपत्ति भी पढ़ा गया है।

क्या ओवरले के लिए निर्देशांक बदलने का एक तरीका है, ओवरले व्यू को हटाने और एक नया जोड़ने के लिए रिसॉर्ट के बिना (जो स्क्रीन पर बहुत ध्यान देने योग्य झिलमिलाहट का कारण बनता है।)?

+0

मुझे एमकेपोलीलाइन देखने में समान समस्या है। मेरे मामले में रेखा हमेशा लंबी हो जाती है, इसलिए मैं हमेशा दो पॉलीलाइनों को खींचता हूं और फिर पुराने को हटा देता हूं। इस तरह लंबी लाइन झिलमिलाहट छुपाती है। – theaob

उत्तर

0

एक ही समस्या यहां आई है, इसलिए मैं विधि का सेट बना रहा हूं और इसे आवश्यकता के अनुसार बुला रहा हूं।

-(void)removeAllAnnotationFromMapView{ 
    if ([[self.tmpMapView annotations] count]) { 
     [self.tmpMapView removeAnnotations:[self.tmpMapView annotations]]; 
    } 
} 
-(void)removeAllOverlays{ 
    if ([[self.tmpMapView overlays] count]) { 
     [self.tmpMapView removeOverlays:[self.tmpMapView overlays]]; 
    } 
} 

-(void)removeOverlayWithTag:(int)tagValue{ 
    for (MKOverlayView *oView in [self.tmpMapView overlays]) { 
     if (oView.tag == tagValue) { 
      [self.tmpMapView removeOverlay:oView]; 
     } 
    } 
} 

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^