Sto usando mapkit su iPhone con iOS 4. Sto usando una sovrapposizione personalizzata e una vista sovrapposizione personalizzata, per disegnare forme sulla mappa. Al momento, le forme sono solo rettangoli, ma sto progettando qualcosa di più sofisticato. Questo è il motivo per cui non sto usando il tipo di sovrapposizione MKPolygon. Questo è il codice per il mio metodo di sovrapposizione vista del disegno:Impossibile tracciato percorso sulla vista sovrapposizione mapkit
-(void)drawMapRect:(MKMapRect)mapRect zoomScale:(MKZoomScale)zoomScale inContext:(CGContextRef)context
{
// Clip context to bounding rectangle
MKMapRect boundingMapRect = [[self overlay] boundingMapRect];
CGRect boundingRect = [self rectForMapRect:boundingMapRect];
CGContextAddRect(context, boundingRect);
CGContextClip(context);
// Define shape
CGRect shapeRect = CGRectMake(0.5f, 0.5f, boundingRect.size.width - 1.0f, boundingRect.size.height - 1.0f);
// Fill
CGContextSetRGBFillColor(context, 0.5f, 0.5f, 0.5f, 0.5f);
CGContextFillRect(context, shapeRect);
// Stroke
CGContextSetRGBStrokeColor(context, 0, 0, 0, 0.75f);
CGContextSetLineWidth(context, 1.0f);
CGContextStrokeRect(context, shapeRect);
}
Il problema è che i rettangoli ottenere compilati correttamente (in modo che appaia la loro delimitazione rect è impostato correttamente), ma non ottengono accarezzò. Qualcuno può aiutare? Grazie!
Mentre non conosco la soluzione, volevo solo attirare la vostra attenzione su [CGRectInset] (http://developer.apple.com/library/ios/DOCUMENTATION/GraphicsImaging/Reference/CGGeometry/Reference/reference. html # // apple_ref/c/func/CGRectInset) (invece di creare il rettangolo con 'CGRectMake'). – DarkDust
Mi è appena venuto in mente: il rettangolo viene accarezzato se viene ulteriormente inserito? Quindi per prima cosa lo riempi, quindi inserisci il rettangolo di un altro 0,5 e poi lo accarezza? – DarkDust
Ho trovato un'altra domanda relativa a questo: http://stackoverflow.com/questions/5274164/custom-mkoverlayview-line-width quindi sembra che il problema sia dovuto al ridimensionamento della larghezza della linea e sembra che debba risolvere il mio codice in questo modo : CGContextSetLineWidth (context, 5.0f/zoomScale); –