当前位置: 首页 > 面试题库 >

Swift iOS Google Map,协调路径

丌官运诚
2023-03-14
问题内容

我正在尝试在我的应用程序中创建一个函数,该函数将引导用户使用我创建的标记。这是我正在使用的代码,效果很好,它可以为用户提供当前位置并将其显示在地图上。但是,如何获得指向标记的说明?

任何遮篷都会有帮助

class Karta: UIViewController, CLLocationManagerDelegate {
    @IBOutlet var mapView: GMSMapView!

    let locationManager = CLLocationManager()

    override func viewDidLoad() {
        super.viewDidLoad()

        //allow app to track user
        locationManager.delegate = self
        locationManager.requestWhenInUseAuthorization()

        //set out a marker on the map
        var marker = GMSMarker()
        marker.position = CLLocationCoordinate2DMake(56.675907, 12.858798)
        marker.appearAnimation = kGMSMarkerAnimationPop
        marker.icon = UIImage(named: "flag_icon")
        marker.map = mapView
     }

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        if segue.identifier == "Types Segue" {
            let navigationController = segue.destinationViewController as UINavigationController
        }
    }

    func locationManager(manager: CLLocationManager!, didChangeAuthorizationStatus status: CLAuthorizationStatus) {

        //If map is being used
        if status == .AuthorizedWhenInUse {
            var myLocation = mapView
            locationManager.startUpdatingLocation()
            mapView.myLocationEnabled = true
            mapView.settings.myLocationButton = true
        }
    }

    func locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!) {
        if let location = locations.first as? CLLocation {
            mapView.camera = GMSCameraPosition(target: location.coordinate, zoom: 15, bearing: 0, viewingAngle: 0)
          locationManager.stopUpdatingLocation()
        }
    }
}

问题答案:

与Apple的MapKit不同,iOS的Google Maps SDK本身并不包含执行路线计算的方法。

相反,您需要使用Google Directions
API:https :
//developers.google.com/maps/documentation/directions/。它是仅HTTP的API,并且Google到目前为止还没有提供任何SDK,但是您可以轻松地自己编写包装器,或者选择Github上可用的众多选项之一:

  • https://github.com/sudeepjaiswal/GoogleDirections
  • https://github.com/sebk/GoogleDirections
  • https://github.com/iamamused/iOS-DirectionKit
  • https://github.com/marciniwanicki/OCGoogleDirectionsAPI
  • 还有很多其他…


 类似资料:
  • 问题内容: 我在将UIKit架构模式转换为SwiftUI时遇到问题。我目前的模式主要是带有协调器/路由器的MVVM。通过添加@ ObservableObject / @ Published,MVVM部分看起来非常简单自然。但是,协调/路由似乎并不直观。视图和协调(导航)功能在SwiftUI中紧密结合在一起。似乎实际上不可能将它们与使用helper结构分开。 这里是一个示例:我想在SwiftUI中创

  • 我刚刚在Codity遇到了一个任务,我找不到目标O(n)效率的解决方案;我的解决方案运行为O(n2)。如果有人能给我一个提示,告诉我如何让它运行得更快,我会非常高兴。这是任务。 给出了一个由N个整数组成的非空零索引数组A。 monotonic_pair是一对整数 (P, Q),使得 0 ≤ P ≤ Q 目标是找到指数相距最远的monotonic_pair。更准确地说,我们应该最大化Q-P值。只找到

  • VS Code 把 NodeJS 和 Mono 的调试功能抽象出来了,大家就可以通过自定义 Debugger Adapter 和 VSCode Debug Protocol 从而实现自己的调试器。现在 VS Code 插件中心 里,Go、PHP、Python、Ruby 的 Debugger 做的都比较成熟了 参见 https://code.visualstudio.com/Docs/extensi

  • 使用Swoole协程时,可以使用下面的方法进行调试 GDB调试 进入 gdb gdb php test.php gdbinit (gdb) source /path/to/swoole-src/gdbinit 设置断点 例如 co::sleep 函数 (gdb) b zim_swoole_coroutine_util_sleep 打印当前进程的所有协程和状态 (gdb) co_list coro

  • 在底层,Chrome 开发者工具是用 HTML,JavaScript 和 CSS 写的 Web 应用程序。在 Javascript 运行时,它提供一个特殊的绑定,这允许它与 chrome 网页进行交互并且容许装载它们。交互协议包括被发送到页面的命令,和该页面生成的事件。尽管 Chrome 开发者工具是该协议的主要客户,其中包括远程调试(remote debugging),但有很多办法可以让第三方能

  • 8.1. 概述 路由器主要负责解析一个请求并且决定什么module、controller、action被请求;它同时也定义了一种方法来实现用户自定义路由,这也使得它成为最重要的一个MVC组组件. 为了方便自定义路由, Yaf摒弃了0.1版本中的自定义路由器方式, 而采用了更为灵活的路由器和路由协议分离的模式. 也就是一个固定不变的路由器, 配合各种可自定义的路由协议, 来实现灵活多变的路由策略.