A partir de Xojo 2023 Release 4 hemos mejorado algunas áreas del control MobileMapViewer y la clase MobileLocation en iOS, comenzando con la disponibilidad de añadir nuevas ubicaciones al mapa mediante una acción del usuario.
En anteriores versiones de Xojo el único modo de añadir nuevas ubicaciones a MobileMapViewer
bajo iOS era mediante código y como valores probablemente preestablecidos. A partir de Xojo 2023r4 el usuario puede iniciar dicha acción mediante una pulsación larga sobre el control del mapa. Dicha acción lanzará el nuevo evento Pressed que recibirá los valores correspondientes a la latitud y la longitud. De este modo puedes utilizar dichos valores para añadir una nueva instancia de MapLocation al mapa, como por ejemplo:
Var nl As New MapLocation(latitude, longitude) MapViewer1.AddLocation nl
Incluso más, ahora el usuario podrá seleccionar y arrastrar cualquiera de los Pin que se hayan añadido al control de mapa para modificar la ubicación de los mismos en el mapa.
Puntos de Interés
Una característica que pensamos será de utilidad para muchas apps iOS basadas en mapas es el nuevo método PointsOfInterest
de la clase MapLocation. Cuando se llama a dicho método sobre una instancia de MapLocation este devolverá un array de strings con los puntos de interés que están próximos a la ubicación, como por ejemplo paisajes, monumentos, museos, etc.
Es decir, el tipo de información en la que puede estar interesado el usuario de tu app iOS cuando está caminando por una ciudad o ubicación dada, o simplemente cuando selecciona cualquiera de los Pin que se hayan añadido previamente al mapa.
Esta línea de código recuperará los Puntos de Interés (en el caso de que existan) para una instancia de MapLocation asignada previamente a la variable “nl”:
Var pois() As String = nl.PointsOfInterest
Conocer la Distancia
Otro de los nuevos métodos añadidos a la clase MapLocation en iOS es DistanceTo
. Este método se llama sobre una instancia de MapLocation, y espera recibir otra instancia de MapLocation como parámetro. Como resultado, devolverá un valor Double expresando, en kilómetros, la distancia existente entre ambas ubicaciones.
Por ejemplo, este código añadido en el evento Pressed de una instancia MobileMapViewer mostrará la distancia entre la nueva ubicación obtenida mediante la pulsación larga del usuario sobre el Mapa y una ubicación previa almacenada en una propiedad de la pantalla:
Var nl As New MapLocation(latitude, longitude) MapViewer1.AddLocation nl If PreviousLocation <> Nil Then distanceLabel.Text = nl.DistanceTo(PreviousLocation).tostring End If PreviousLocation = nl
En Resumen
Con estas nuevas incorporaciones y mejoras, entre otras, disponibles a partir de Xojo 2023r4 para MobileMapViewer y MobileLocation en iOS, esperamos que puedas proporcionar incluso más potencia y flexibilidad a tus apps iOS basadas en mapas y creadas con Xojo. ¡Estamos deseando ver las apps iOS que creas con Xojo!