Delen via


Functiegegevens weergeven in de iOS SDK (preview)

Notitie

Buitengebruikstelling van Azure Kaarten iOS SDK

De Azure Kaarten Native SDK voor iOS is nu afgeschaft en wordt buiten gebruik gesteld op 3-31-25. Om serviceonderbrekingen te voorkomen, migreert u tegen 3-31-25 naar de Azure Kaarten Web SDK. Zie de migratiehandleiding voor de Azure Kaarten iOS SDK voor meer informatie.

Ruimtelijke gegevens worden vaak weergegeven met punten, lijnen en veelhoeken. Aan deze gegevens is vaak metagegevensinformatie gekoppeld. Een punt kan bijvoorbeeld de locatie van een restaurant en metagegevens over dat restaurant zijn naam, adres en type eten dat het serveert. Deze metagegevens kunnen worden toegevoegd als eigenschappen van een GeoJSON Feature. Met de volgende code wordt een eenvoudige puntfunctie gemaakt met een title eigenschap met een waarde van "Hello World!".

// Create a data source and add it to the map.
let source = DataSource()
map.sources.add(source)

// Create a point feature.
let feature = Feature(Point(CLLocationCoordinate2D(latitude: -122.33, longitude: 47.64)))

// Add a property to the feature.
feature.addProperty("title", value: "Hello World!")

// Create a point feature, pass in the metadata properties, and add it to the data source.
source.add(feature: feature)

Zie Een gegevensbron maken voor meer informatie over het maken en toevoegen van gegevens aan de kaart.

Wanneer een gebruiker communiceert met een functie op de kaart, kunnen gebeurtenissen worden gebruikt om op deze acties te reageren. Een veelvoorkomend scenario is het weergeven van een bericht dat is gemaakt van de metagegevenseigenschappen van een functie waarmee de gebruiker interactie heeft gehad. De azureMap(_:didTapOn:) gebeurtenis is de belangrijkste gebeurtenis die wordt gebruikt om te detecteren wanneer de gebruiker op een functie op de kaart heeft getikt. Er is ook een azureMap(_:didLongPressOn:) evenement. Wanneer een gemachtigde aan de kaart wordt toegevoegd, kan deze worden beperkt tot één laag door de id van een laag door te geven om deze te beperken. Als er geen laag-id wordt doorgegeven, tikt u op een functie op de kaart, ongeacht in welke laag deze zich bevindt, wordt deze gebeurtenis geactiveerd. Met de volgende code maakt u een symboollaag om puntgegevens op de kaart weer te geven en voegt u vervolgens een gemachtigde toe, beperkt tot deze symboollaag, waarmee de azureMap(_:didTapOn:) gebeurtenis wordt verwerkt.

// Create a symbol and add it to the map.
let layer = SymbolLayer(source: source)
map.layers.addLayer(layer)

// Add the delegate to the map to handle feature tap events on the layer only.
map.events.addDelegate(self, for: [layer.id])
func azureMap(_ map: AzureMap, didTapOn features: [Feature]) {
    // Retrieve the title property of the feature as a string.
    let title = features.first?.properties["title"] as? String

    // Do something with the title.
}

Een waarschuwing weergeven

Een waarschuwing is een van de eenvoudigste manieren om informatie weer te geven aan de gebruiker en is beschikbaar in alle doorgaans ondersteunde versies van iOS. Als u de gebruiker snel iets wilt laten weten over waarop ze hebben getikt, is een waarschuwing mogelijk een goede optie. De volgende code laat zien hoe een waarschuwing kan worden gebruikt met de azureMap(_:didTapOn:) gebeurtenis.

func azureMap(_ map: AzureMap, didTapOn features: [Feature]) {
    // Retrieve the title property of the feature as a string.
    let title = features.first?.properties["title"] as? String

    // Display an alert with the title information.
    let alert = UIAlertController(title: title, message: nil, preferredStyle: .alert)
    alert.addAction(UIAlertAction(title: "OK", style: .cancel))
    present(alert, animated: true)
}

Animatie van een functie waarop wordt getikt en een waarschuwing wordt weergegeven.

Naast waarschuwingen zijn er veel andere manieren om de metagegevenseigenschappen van een functie weer te geven, zoals:

  • Een aangepaste weergave toevoegen op de kaart
  • Een onderliggende weergavecontroller toevoegen op de kaart
  • Presenteer modaal een andere weergavecontroller boven de huidige.
  • Navigeer naar een andere weergavecontroller.

Een pop-up weergeven

De Azure Kaarten iOS SDK biedt een Popup klasse waarmee u eenvoudig ui-aantekeningen kunt maken die zijn verankerd aan een positie op de kaart. Voor pop-ups moet u een weergave voor zelfgrootte doorgeven aan de content optie van de pop-up. Hier volgt een eenvoudig voorbeeld van een weergave waarin donkere tekst boven op een witte achtergrond wordt weergegeven.

class PopupTextView: UIView {
    private let textLabel: UILabel = {
        let label = UILabel()
        label.translatesAutoresizingMaskIntoConstraints = false
        label.numberOfLines = 0
        label.textColor = UIColor(red: 34 / 255, green: 34 / 255, blue: 34 / 255, alpha: 1)
        label.font = .systemFont(ofSize: 18)
        return label
    }()

    override init(frame: CGRect) {
        super.init(frame: frame)
        setup()
    }

    required init?(coder: NSCoder) {
        super.init(coder: coder)
    }

    override func awakeFromNib() {
        super.awakeFromNib()
        setup()
    }

    private func setup() {
        backgroundColor = .white
        addSubview(textLabel)

        NSLayoutConstraint.activate([
            textLabel.topAnchor.constraint(equalTo: topAnchor, constant: 10),
            textLabel.bottomAnchor.constraint(equalTo: bottomAnchor, constant: -10),
            textLabel.leadingAnchor.constraint(equalTo: leadingAnchor, constant: 10),
            textLabel.trailingAnchor.constraint(equalTo: trailingAnchor, constant: -25)
        ])
    }

    func setText(_ text: String) {
        textLabel.text = text
    }
}

Met de volgende code wordt een pop-up gemaakt en toegevoegd aan de kaart. Wanneer op een functie wordt getikt, wordt de title eigenschap weergegeven met behulp van de PopupTextView klasse, waarbij het onderste midden van de indeling is verankerd aan de opgegeven positie op de kaart.

// Create a popup and add it to the map.
let popup = Popup()
map.popups.add(popup)

// Set popup to the class property to use in events handling later.
self.popup = popup
func azureMap(_ map: AzureMap, didTapOn features: [Feature]) {
    guard let popup = popup, let feature = features.first else {
        // Popup has been released or no features provided
        return
    }

    // Create the custom view for the popup.
    let customView = PopupTextView()

    // Set the text to the custom view.
    let text = feature.properties["title"] as! String
    customView.setText(text)

    // Get the position of the tapped feature.
    let position = Math.positions(from: feature).first!

    // Set the options on the popup.
    popup.setOptions([
        // Set the popups position.
        .position(position),

        // Set the anchor point of the popup content.
        .anchor(.bottom),

        // Set the content of the popup.
        .content(customView)

        // Optionally, hide the close button of the popup.
        // .closeButton(false)

        // Optionally offset the popup by a specified number of points.
        // .pointOffset(CGPoint(x: 10, y: 10))
    ])

    // Open the popup.
    popup.open()
}

In de volgende schermopname worden pop-ups weergegeven wanneer er op functies wordt getikt en blijven verankerd aan de opgegeven locatie op de kaart terwijl deze wordt verplaatst.

Animatie van een pop-up die wordt weergegeven terwijl de kaart wordt verplaatst terwijl de pop-up is verankerd.

Aanvullende informatie

Ga als volgende te werk om meer gegevens toe te voegen aan uw kaart: