Rechercher dans le blog

Migrez du SDK Google Maps vers le SDK ArcGIS Runtime pour iOS



Les coûts liés à l’utilisation de Google Maps dans votre application ont considérablement augmenté avec les modifications de prix introduites par Google l’année dernière ? Rassurez-vous, vous n'êtes pas seul. Cette augmentation de prix a poussé de nombreux développeurs iOS à migrer vers le SDK ArcGIS Runtime pour iOS. Il y a deux raisons à cela.

PremièrementArcGIS Runtime est une technologie de cartographie très performante qui prend en charge de nombreux types de données cartographiques. Vous pouvez non seulement visualiser, explorer et interagir avec de grandes quantités de données géospatiales en 2D et 3D, mais vous pouvez également rechercher des lieux et des adresses, trouver les meilleurs itinéraires entre plusieurs sites et manipuler toutes ces données spatiales sur le client pour créer de véritables perspectives. puissantes applications interactives basées sur la localisation.

Deuxièmement, vous obtenez beaucoup gratuitement avec un plan «Essentials» d’ArcGIS for Developers. J'avais écrit un article résumant les points, les revoici :
  • 1 000 000 transactions de fond de carte et de recherche géographique par mois
  • Applications illimitées non génératrices de revenus (publiques ou d'entreprise)
  • Utilisateurs illimités
  • Crédits pour générer des itinéraires (jusqu'à 10 000 gratuits par mois)
  • Dessinez des fonds de carte et gérez le contenu de votre carte.
  • Héberger, interroger et analyser du contenu géographique
  • Prenez vos cartes et vos données hors ligne
  • Accédez à une large sélection de contenus et de services riches hébergés dans ArcGIS Online.
  • Utilisation de l’ensemble des API et SDK d’Esri pour les plateformes Web, natives et mobiles
    Commencer avec le SDK Runtime

    Il suffit de vous inscrire pour un compte de développeur gratuit à developers.arcgis.com (aucune information de paiement nécessaire).

    Ensuite, téléchargez et installez le SDK ici (l’installation du SDK ArcGIS Runtime pour iOS via Cocoapods ou l’installation manuelle est traitée dans la rubrique de ce guide).

    C'est aussi simple que ça. Il n’y a pas de clé d’API nécessaire pour fonctionner. 

    Voyons maintenant quelques scénarios courants et la traduction de l’approche de Google dans le SDK ArcGIS Runtime.

    Afficher une carte

    Tout d’abord, ajoutons une carte à une application iOS.
    Basemap in Runtime SDK
    Voici comment afficher une carte simple à l’aide du SDK Google Maps pour iOS:
    
    import UIKit
    import GoogleMaps
    
    class DemoViewController: UIViewController {
    
      override func loadView() {
        let camera = GMSCameraPosition.camera(withLatitude: 40.72,
                                                longitude: -74, 
                                                zoom: 6.0)
        let mapView = GMSMapView.map(withFrame: .zero, camera: camera)
        view = mapView
      }
    }
    
    
    Et voici la même carte utilisant ArcGIS Runtime SDK pour iOS:
    
    import UIKit
    import ArcGIS
    
    class DemoViewController: UIViewController {
      override func loadView() {
    
        let mapView = AGSMapView(frame: .zero)
        mapView.map = AGSMap(basemapType: .navigationVector,
    
                             latitude: 40.72, longitude: -74, 
                             levelOfDetail: 6)
    view = mapView
    }
    }
    

    Notez la référence à un fond de carte. Un fond de carte comprend généralement des routes, des bâtiments, des images satellite, des noms de lieux, des limites, etc., qui donnent un contexte aux données de votre application.

    Vous pouvez choisir parmi de nombreuses cartes de base prêtes à l’emploi émanant d’Esri et de tiers, et vous pouvez créer votre propre style à l’aide de l’éditeur de styles de mosaïque vectorielle.

    Notez également que Runtime utilise à la fois une carte et une vue cartographique. La vue Carte est le composant d'interface utilisateur qui gère les interactions utilisateur et l'affichage de la carte, tandis que celle-ci est chargée de définir les données à afficher (y compris le fond de carte).

    Ajouter un marqueur

    Nous allons maintenant ajouter des informations à la carte.

    Dans le SDK Google Maps pour iOS, vous ajoutez un marqueur:

    class DemoViewController: UIViewController {
      override func loadView() {
    ...
        // Create and add a marker
        let marker = GMSMarker()
        marker.position = CLLocationCoordinate2D(latitude: 40.72, longitude: -74)
        marker.title = "New York"
        marker.snippet = "USA"
        marker.map = mapView
    
    L'équivalent d'ArcGIS Runtime SDK consiste à ajouter un graphique à une superposition graphique:

    class DemoViewController: UIViewController {
      // Create a graphics overlay to contain graphics.
      let overlay = AGSGraphicsOverlay()
      override func loadView() {
    ...
        // Add the graphics overlay to the map view.
    mapView.graphicsOverlays.add(overlay)
        // Create a graphic and add it to the graphics overlay.
        let graphic = AGSGraphic(geometry: AGSPointMakeWGS84(40.72, -74), 
        symbol: AGSSimpleMarkerSymbol(style: .circle, color: .red, size: 10),attributes: [ "city": "New York","country": "USA" ])
    overlay.graphics.add(graphic)
    
    A Runtime SDK map with a simple marker

    Un graphique est une combinaison de géométrie (dans ce cas, un point, mais il peut s'agir d'une polyligne ou d'un polygone), d'un contenu d'attribut (paires clé-valeur) et d'un style d'affichage (appelé symbole dans le Runtime). Les graphiques sont très flexibles et vous pouvez penser à un marqueur comme à un simple graphique ponctuel.

    Vous remarquerez que nous devons configurer la vue Carte avec une superposition graphique pour contenir les graphiques que nous voulons afficher. Les superpositions graphiques et les calques constituent un modèle puissant d’accès aux données et d’affichage des données provenant de diverses sources. Pour plus d'informations à ce sujet, voir les rubriques du guide Cartes et scènes, et Couches et tableaux.

    Afficher les informations

    Dans le SDK Runtime, vous affichez des informations associées à un emplacement de carte à l'aide d'un callout associé à une vue de carte et que vous devez afficher ou ignorer explicitement.
    Runtime Callout of New York

    Pour afficher une légende lorsque vous appuyez sur un graphique:
    1. Assurez-vous que DemoViewController peut répondre aux interactions de la vue Carte en déclarant la conformité à AGSGeoViewTouchDelegate et en définissant correctement AGSMapView.touchDelegate.
    2. Implémentez le gestionnaire de délégué de geste tactile.
    3. Indiquez au Runtime d'identifier les graphiques sur lesquels l'utilisateur a tapé sur la carte.
    4. Affichez une légende appropriée si nécessaire.
    class DemoViewController: UIViewController, AGSGeoViewTouchDelegate {
      override func loadView() {
    ...
        // Set the map view's touch delegate.
        mapView.touchDelegate = self
    }
    
      // Handle the AGSGeoViewTouchDelegate tap event.
      func geoView(_ geoView: AGSGeoView, didTapAtScreenPoint screenPoint: CGPoint, mapPoint: AGSPoint) {
        // Identify which graphic, if any, the user tapped on.
    geoView.identify(overlay, screenPoint: screenPoint, tolerance: 20, returnPopupsOnly: false) 
          { result in
          if let tappedGraphic = result.graphics.first {
            // Populate the configure the callout.
            geoView.callout.title = tappedGraphic.attributes["city"] as? String
            geoView.callout.detail = tappedGraphic.attributes["country"] as? String
            geoView.callout.isAccessoryButtonHidden = true
            // Show the callout.
            geoView.callout.show(for: tappedGraphic, tapLocation: mapPoint, animated: true)
          } else {
            // The user didn't tap on a graphic, so dismiss any existing callout.
    geoView.callout.dismiss()
    }
        }
    }
    
    Les légendes peuvent afficher des informations simples par défaut, mais peuvent être configurées à des degrés divers. Vous pouvez même spécifier une vue personnalisée à utiliser.

    ArcGIS Runtime vous donne un contrôle total sur la façon dont vous répondez aux interactions de l'utilisateur avec votre vue Carte, ainsi que des API pratiques pour les réponses courantes à ces interactions. Dans ce cas, nous voulons identifier ce qui a été mis sur écoute et fournir des commentaires à l'aide d'une légende.

    Prochaines étapes et autres ressources


    Nous venons tout juste de vous montrer ce que le SDK ArcGIS Runtime peut faire pour vous. Voici quelques-unes des nombreuses ressources à votre disposition lors de la création des applications basées sur la localisation avec Runtime:
    • Le guide couvre les concepts clés du Runtime, y compris plus de détails sur les sujets abordés ici.
    • Des samples d'applications Open-Source couvrant plus de 100 fonctionnalités Runtime.
    • Les DevLabs pratiques vous présentent les composants des API. En tant que développeur migrant à partir de Google Maps, consultez notamment ceux-ci:
                 - Trouver des lieux
                 - Recherche et géocode
                 - Directions et routage
    • Une référence d'API détaillée et consultable.
    • Forums activement surveillés. Rejoignez la communauté GeoNet et posez-y vos questions.
    • N'oubliez pas de consulter la question «Que puis-je faire avec 50 crédits par mois?» Dans notre FAQ.
    Une dernière chose. Bien que cet article se concentre sur le SDK ArcGIS Runtime pour iOS, il existe des SDK ArcGIS Runtime pour Android.NET (y compris Xamarin pour le développement multiplate-forme), macOSJava et Qt (toujours pour les solutions multiplate-forme), qui offrent tous la même fonctionnalité dans un ensemble cohérent d’API.

    Aucun commentaire:

    Enregistrer un commentaire