ios mkmapview mkpolyline

ios - puntos de latitud y longitud de MKPolyline



mkmapview (2)

Versión Swift 3:

Soy consciente de que esta es una pregunta muy antigua, pero sigue siendo uno de los principales éxitos en Google al buscar este problema, sin buenas soluciones de Swift. Quería compartir mi pequeña extensión para hacer la vida un poco más fácil agregando coordinates Propiedad a MKPolyline:

https://gist.github.com/freak4pc/98c813d8adb8feb8aee3a11d2da1373f

Estoy tratando de encontrar una manera de obtener todos los puntos de latitud y longitud de un MKPolyline dibujado en un MKMapView en una aplicación iOS.

Sé que MKPolyline no almacena los puntos de latitud y longitud, pero estoy buscando una manera de crear una serie de lat y tiempo que MKPolyline tocaría en el mapa.

¿Alguien tiene soluciones específicas posibles en esto?

Gracias

EDIT: Después de ver la primera respuesta (gracias) creo que necesito explicar mejor lo que está haciendo mi código:

  1. primero llamo a "CalculateDirectionsWithCompletionHandler" en un objeto MKDirections
  2. Vuelvo el objeto MKRoute que tiene una propiedad de " polilínea ".
  3. luego llamo " addOverlay " en la vista de mapa que pasa en la polilínea desde el objeto MKRoute

Eso es todo.

Entonces, ya tengo una polilínea construida para mí. Así que me gustaría obtener todos los puntos encontrados en la polilínea de alguna manera y mapearlos a un lat y largo ...


Para obtener las coordenadas de la polilínea de un MKRoute , use el getCoordinates:range:
Ese método está en la clase MKMultiPoint la cual MKPolyline hereda.

Eso también significa que esto funciona para cualquier polilínea, ya sea que haya sido creada por usted o por MKDirections .

Asigna una matriz C lo suficientemente grande como para contener la cantidad de coordenadas que desea y especifique el rango (por ejemplo, todos los puntos a partir del 0).

Ejemplo:

//route is the MKRoute in this example //but the polyline can be any MKPolyline NSUInteger pointCount = route.polyline.pointCount; //allocate a C array to hold this many points/coordinates... CLLocationCoordinate2D *routeCoordinates = malloc(pointCount * sizeof(CLLocationCoordinate2D)); //get the coordinates (all of them)... [route.polyline getCoordinates:routeCoordinates range:NSMakeRange(0, pointCount)]; //this part just shows how to use the results... NSLog(@"route pointCount = %d", pointCount); for (int c=0; c < pointCount; c++) { NSLog(@"routeCoordinates[%d] = %f, %f", c, routeCoordinates[c].latitude, routeCoordinates[c].longitude); } //free the memory used by the C array when done with it... free(routeCoordinates);

Dependiendo de la ruta, prepárate para cientos o miles de coordenadas.