我尝试将Mapbox与SwiftUI结合使用。
我https://stackoverflow.com/a/56551675/5653544应用了这个答案,也遵循了mapbox教程。
所以我有一个MapView.swift视图:
import SwiftUI
import Mapbox
extension MGLPointAnnotation {
convenience init(title: String, coordinate: CLLocationCoordinate2D) {
self.init()
self.title = title
self.coordinate = coordinate
}
}
struct MapView: UIViewRepresentable {
@Binding var annotations: [MGLPointAnnotation]
private let mapView: MGLMapView = MGLMapView(frame: .zero, styleURL: MGLStyle.streetsStyleURL)
// MARK: - Configuring UIViewRepresentable protocol
func makeUIView(context: UIViewRepresentableContext<MapView>) -> MGLMapView {
mapView.delegate = context.coordinator
return mapView
}
func updateUIView(_ uiView: MGLMapView, context: UIViewRepresentableContext<MapView>) {
updateAnnotations()
}
func makeCoordinator() -> MapView.Coordinator {
Coordinator(self)
}
// MARK: - Configuring MGLMapView
func styleURL(_ styleURL: URL) -> MapView {
mapView.styleURL = styleURL
return self
}
func centerCoordinate(_ centerCoordinate: CLLocationCoordinate2D) -> MapView {
mapView.centerCoordinate = centerCoordinate
return self
}
func zoomLevel(_ zoomLevel: Double) -> MapView {
mapView.zoomLevel = zoomLevel
return self
}
private func updateAnnotations() {
if let currentAnnotations = mapView.annotations {
mapView.removeAnnotations(currentAnnotations)
}
mapView.addAnnotations(annotations)
}
// MARK: - Implementing MGLMapViewDelegate
final class Coordinator: NSObject, MGLMapViewDelegate {
var control: MapView
init(_ control: MapView) {
self.control = control
}
func mapView(_ mapView: MGLMapView, didFinishLoading style: MGLStyle) {
let coordinates = [
CLLocationCoordinate2D(latitude: 37.791329, longitude: -122.396906),
CLLocationCoordinate2D(latitude: 37.791591, longitude: -122.396566),
CLLocationCoordinate2D(latitude: 37.791147, longitude: -122.396009),
CLLocationCoordinate2D(latitude: 37.790883, longitude: -122.396349),
CLLocationCoordinate2D(latitude: 37.791329, longitude: -122.396906),
]
let buildingFeature = MGLPolygonFeature(coordinates: coordinates, count: 5)
let shapeSource = MGLShapeSource(identifier: "buildingSource", features: [buildingFeature], options: nil)
mapView.style?.addSource(shapeSource)
let fillLayer = MGLFillStyleLayer(identifier: "buildingFillLayer", source: shapeSource)
fillLayer.fillColor = NSExpression(forConstantValue: UIColor.blue)
fillLayer.fillOpacity = NSExpression(forConstantValue: 0.5)
mapView.style?.addLayer(fillLayer)
}
func mapView(_ mapView: MGLMapView, viewFor annotation: MGLAnnotation) -> MGLAnnotationView? {
return nil
}
func mapView(_ mapView: MGLMapView, annotationCanShowCallout annotation: MGLAnnotation) -> Bool {
return true
}
}
}
我的ContentView.swift调用MapView:
import SwiftUI
import Mapbox
struct ContentView: View {
@State var annotations: [MGLPointAnnotation] = [
MGLPointAnnotation(title: "Mapbox", coordinate: .init(latitude: 37.791434, longitude: -122.396267))
]
var body: some View {
MapView(annotations: $annotations).centerCoordinate(.init(latitude: 37.791293, longitude: -122.396324)).zoomLevel(16)
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
我还创建了一个~/。带有mapbox令牌的mapbox文件,该令牌由我的mapbox帐户获取。但我有一张空白地图:
当我下载并运行mapbox示例时,它工作正常,所以我认为这不是因为我的Xcode版本。有人知道为什么我自己创建项目时无法加载地图吗?
Xcode版本: 11.3
地图盒版本:5.3。0
您需要在信息中设置您的MGLMapboxAccessToken
。普利斯特。
我一直在使用mapbox户外光栅瓷砖服务器处理传单地图。Mapbox有一些现成的样式,其中大部分都列在这个答案中。这个的代码/url是这样的: 我喜欢这种风格。但我的问题是,我试图添加一个图像。我希望imageoverlay位于地图地形图形之上,但位于标签之下。所以我所做的就是进入mapbox studio创建这两种样式-基本上是户外样式,标签分开: 没有标签 仅标签 旧样式在左侧,带有分离图层的
我最近安装了Eclipse,版本是Eclipse IDE for Enterprise Java和Web Developers(包括孵化组件)版本:2021-03(4.19.0)构建ID:20210312-0638操作系统:Windows 10,v.10.0,x86_64/win32 Java版本:16 Windows Builder还安装了1.9.5版本并已更新 我创建了一个新Java项目,并将
问题内容: 我正在使用python比较2个文件,如下所示: 目前,我正在通过脚本(从列中删除空格)之前运行文件。 s的示例: 有办法做到这一点并为我节省一步吗? 问题答案: 您可以使用.str.strip()在Pandas中整个系列: 这将消除导致/在后的空格中柱都与 或者,您可以修改行以同时使用 您似乎正在尝试删除包含数字的字符串中的空格。您可以通过以下方式做到这一点:
1)创建新项目。 2)选定的谷歌地图创建。 3)调试google_maps_api.xml所遵循的步骤。 5)AndroidManifest.xml
问题内容: 我有一个HTML表单- 使用PHP,我正在将表单的数据发送到MySQL数据库中。表格上某些问题的答案都有复选框。显然,用户不必勾选一个问题的所有复选框。我还想将其他问题(包括广播组)设为可选。 但是,如果我提交带有空框,单选组等的表单,则会收到一长串的“未定义索引”错误消息。 我该如何解决?谢谢。 问题答案: 未选中的单选或复选框元素未提交,因为它们不被视为成功。因此,您必须检查是否使
这真的快把我逼疯了。我已经做了以下工作: 将我的包名+SHA1(调试密钥库)+SHA1(发布密钥库)添加到Google Developer的控制台。 已启用用于Android的地图SDK。API密钥有Android应用程序限制 从Firebase控制台将google-services.json添加到我的应用程序 添加了必要的权限: 将API键添加到清单文件-从Google Developer Co