T.O*_*ara 5 google-maps ios google-maps-sdk-ios swift swift4
我发现这个问题可能是完全相同的问题,但接受的答案对我不起作用。
我们目前正在使用 Google Maps API 加载地图以覆盖整个视图。最初的 GMSMapView 背景颜色有点像棕褐色,RGB(237, 234, 226),至少在 xcode 的视图层次结构中,但我们的应用程序在其他地方都有黑色背景,所以在谷歌地图加载我们自定义的深色之前,我们会看到棕褐色的闪烁样式。
有谁知道如何更改初始棕褐色背景颜色?
我们正在 viewDidLoad(下面的代码)中加载我们的自定义样式,但我们假设初始背景不会受此影响。
do {
if let styleURL = Bundle.main.url(forResource: "GoogleMapsStyle", withExtension: "json") {
mapView.mapStyle = try GMSMapStyle(contentsOfFileURL: styleURL)
} else {
NSLog("Unable to find style.json")
}
} catch {
NSLog("One or more of the map styles failed to load. \(error)")
}
Run Code Online (Sandbox Code Playgroud)
*可能有帮助的其他信息:
整页地图视图是滑轮视图的主要部分。
整页地图视图是通过点击表视图单元格的一部分触发的,该单元格加载了 PulleyView 和其中的两个容器视图(主视图和抽屉),主视图或完整地图视图和抽屉/“滑轮”,其中包含一个搜索栏和结果。
在此点击功能期间,它获取可从表视图访问的用户地址,并将地图的相机设置在主滑轮容器视图上,并填充抽屉滑轮容器视图的搜索栏。
guard let pulleyVC = UIStoryboard(name: "EditAddress", bundle: nil).instantiateViewController(withIdentifier: "scheduleAddress") as? PulleyViewController else {
log.error(formatLog("profile", "EditAddress failed to instantiate from storyboard"))
return
}
pulleyVC.loadViewIfNeeded()
pulleyVC.addNavBar()
pulleyVC.setNavBarTitle(title: NSLocalizedString("editAddress", comment: ""))
guard let primaryContentVC = pulleyVC.primaryContentViewController as? PrimaryContentViewController else {
log.error(formatLog("profile", "EditAddress failed to instantiate from storyboard"))
return
}
if let placemark = userSelectedPlacemark {
primaryContentVC.setMapLocation(delegate: self, placemark)
}
primaryContentViewController = primaryContentVC
guard let drawerContentVC = pulleyVC.drawerContentViewController as? DrawerContentViewController else {
log.error(formatLog("profile", "EditAddress failed to instantiate from storyboard"))
return
}
if let address = userSelectedPlacemark?.name {
drawerContentVC.setMapPostalAddress(delegate: self, address, usersLocation: locationManager.location)
}
navController.pushViewController(pulleyVC, animated: true)
Run Code Online (Sandbox Code Playgroud)
自定义 json 样式在 PulleyView 控制器的主视图控制器的视图控制器中的 viewDidLoad 函数期间加载。
主要内容视图控制器的 setMapLocation 函数是我们分配地图视图的地方。这个功能的大部分实际上是设置标记。mapview 是这个控制器中的一个全局变量@IBOutlet var mapView: GMSMapView!。
func setMapLocation(delegate: PrimaryContentViewControllerDelegate?, _ placemark: CLPlacemark?) {
if let delegate = delegate {
self.delegate = delegate
}
guard let coordinate = placemark?.location?.coordinate else {
log.warning(formatLog("map", "location not available"))
return
}
savedPlacemark = placemark
mapView.clear()
let camera = GMSCameraPosition.camera(withLatitude: coordinate.latitude, longitude: coordinate.longitude, zoom: 15.0)
mapView.animate(to: camera)
// REFACTOR THIS (ALSO IN MAPTABBLEVIEWCELL)
let marker = GMSMarker(position: camera.target)
let markerImage = UIImage(named: "marker")
let markerView = UIImageView(image: markerImage)
marker.iconView = markerView
marker.map = mapView
marker.groundAnchor = CGPoint(x: 0.5, y: 0.5)
// TODO: get this working and reusable (i.e. an extension?)
let pulseMarker = GMSMarker(position: camera.target)
let pulseRingImg = UIImageView(image: UIImage(named: "pulse"))
pulseRingImg.isUserInteractionEnabled = false
CATransaction.begin()
CATransaction.setAnimationDuration(3.5)
//transform scale animation
var theAnimation: CABasicAnimation?
theAnimation = CABasicAnimation(keyPath: "transform.scale.xy")
theAnimation?.repeatCount = Float.infinity
theAnimation?.autoreverses = false
theAnimation?.fromValue = Float(0.5)
theAnimation?.toValue = Float(1.0)
theAnimation?.isRemovedOnCompletion = false
pulseRingImg.layer.add(theAnimation!, forKey: "pulse")
pulseRingImg.isUserInteractionEnabled = false
CATransaction.setCompletionBlock {() -> Void in
//alpha Animation for the image
let animation = CAKeyframeAnimation(keyPath: "opacity")
animation.duration = 3.5
animation.repeatCount = Float.infinity
animation.values = [Float(2.0), Float(0.5)]
pulseMarker.iconView?.layer.add(animation, forKey: "opacity")
}
CATransaction.commit()
pulseMarker.iconView = pulseRingImg
pulseMarker.layer.addSublayer(pulseRingImg.layer)
pulseMarker.map = mapView
pulseMarker.groundAnchor = CGPoint(x: 0.5, y: 0.5)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1122 次 |
| 最近记录: |