gpt4 book ai didi

ios - 创建自定义 Mapbox 标记

转载 作者:行者123 更新时间:2023-11-28 10:02:57 28 4
gpt4 key购买 nike

我是在 iOS 上使用 MapBox 的新手,想知道是否有人有将自定义 map 标记放到 iOS MapBox map 上的经验。

我曾尝试查看他们的文档,但他们只展示了如何使用 CSS 添加 HTML 标记,我不确定如何在 Swift 中实现。 ( https://docs.mapbox.com/help/tutorials/custom-markers-gl-js/#add-markers-to-the-map )

如能为我指明正确的方向,我们将不胜感激!

最佳答案

进入mapbox IOS SDK解锁所有答案并前往 examples tab解锁可以回答大多数常见问题的代码片段。

不过,回答你的问题。根据 mapBoxs 文档;这就是将自定义图像显示为注释的方式。

import Mapbox

class ViewController: UIViewController, MGLMapViewDelegate {
override func viewDidLoad() {
super.viewDidLoad()

let mapView = MGLMapView(frame: view.bounds, styleURL: MGLStyle.lightStyleURL)
mapView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
mapView.tintColor = .darkGray

// Set the map's bounds to Pisa, Italy.
let bounds = MGLCoordinateBounds(
sw: CLLocationCoordinate2D(latitude: 43.7115, longitude: 10.3725),
ne: CLLocationCoordinate2D(latitude: 43.7318, longitude: 10.4222))
mapView.setVisibleCoordinateBounds(bounds, animated: false)

view.addSubview(mapView)

// Set the map view‘s delegate property.
mapView.delegate = self

// Initialize and add the point annotation.
let pisa = MGLPointAnnotation()
pisa.coordinate = CLLocationCoordinate2D(latitude: 43.72305, longitude: 10.396633)
pisa.title = "Leaning Tower of Pisa"
mapView.addAnnotation(pisa)
}

func mapView(_ mapView: MGLMapView, imageFor annotation: MGLAnnotation) -> MGLAnnotationImage? {
// Try to reuse the existing ‘pisa’ annotation image, if it exists.
var annotationImage = mapView.dequeueReusableAnnotationImage(withIdentifier: "pisa")

if annotationImage == nil {
// Leaning Tower of Pisa by Stefan Spieler from the Noun Project.
var image = UIImage(named: "pisavector")!

// The anchor point of an annotation is currently always the center. To
// shift the anchor point to the bottom of the annotation, the image
// asset includes transparent bottom padding equal to the original image
// height.
//
// To make this padding non-interactive, we create another image object
// with a custom alignment rect that excludes the padding.
image = image.withAlignmentRectInsets(UIEdgeInsets(top: 0, left: 0, bottom: image.size.height/2, right: 0))

// Initialize the ‘pisa’ annotation image with the UIImage we just loaded.
annotationImage = MGLAnnotationImage(image: image, reuseIdentifier: "pisa")
}

return annotationImage
}

func mapView(_ mapView: MGLMapView, annotationCanShowCallout annotation: MGLAnnotation) -> Bool {
// Always allow callouts to popup when annotations are tapped.
return true
}
}

希望这对您有所帮助!

关于ios - 创建自定义 Mapbox 标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58019768/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com