由于
答案 0 :(得分:5)
您可以尝试在以下位置找到图片:
GoogleMaps.framework>资源> GoogleMaps.bundle 要么 GoogleMaps.framework>资源> GoogleMaps.bundle> GMSCoreResources.bundle
我快速搜索了这些,我发现蓝点的唯一关联文件是GMSSprites-0-1x。
请阅读Google地图条款和条件,因为这可能不合法。
答案 1 :(得分:5)
您可以将地图length
设置为myLocationEnabled
。这将隐藏默认位置点。然后使用NO
的实例为您提供职位。在CLLocationManager
CLLocationManager
方法内,您可以设置自定义didUpdateLocations
。使用GMSMarker
将其图标属性设置为您希望点看起来的样子。这样可以达到预期的效果。
答案 2 :(得分:2)
Swift 4
停用默认的Google地图当前位置标记(默认情况下已禁用):
mapView.isMyLocationEnabled = false
创建一个标记作为视图控制器的实例属性(因为委托需要访问它):
let currentLocationMarker = GMSMarker()
GMSMarker
初始值设定项允许UIImage
或UIView
作为自定义图形,而不是UIImageView
。如果您想要更多地控制图形,请使用UIView
。在loadView
或viewDidLoad
(无论您在何处配置地图)中,配置标记并将其添加到地图中:
// configure custom view
let currentLocationMarkerView = UIView()
currentLocationMarkerView.frame.size = CGSize(width: 40, height: 40)
currentLocationMarkerView.layer.cornerRadius = 40 / 4
currentLocationMarkerView.clipsToBounds = true
let currentLocationMarkerImageView = UIImageView(frame: currentLocationMarkerView.bounds)
currentLocationMarkerImageView.contentMode = .scaleAspectFill
currentLocationMarkerImageView.image = UIImage(named: "masterAvatar")
currentLocationMarkerView.addSubview(currentLocationMarkerImageView)
// add custom view to marker
currentLocationMarker.iconView = currentLocationMarkerView
// add marker to map
currentLocationMarker.map = mapView
剩下的就是给标记一个坐标(最初和每次用户位置发生变化时),通过CLLocationManagerDelegate
代表进行。
extension MapViewController: CLLocationManagerDelegate {
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
let lastLocation = locations.last!
// update current location marker
currentLocationMarker.position = CLLocationCoordinate2D(latitude: lastLocation.coordinate.latitude, longitude: lastLocation.coordinate.longitude)
}
}
位置管理器生成的前几个位置可能不是很准确(尽管有时会这样),所以期望您的自定义标记首先跳转一下。您可以等到位置管理员收集几个坐标,然后将其应用到您的自定义标记,等到locations.count > someNumber
,但我发现这种方法非常有吸引力。