如何使用 swift 在谷歌地图中更改我的位置按钮的位置
Posted
技术标签:
【中文标题】如何使用 swift 在谷歌地图中更改我的位置按钮的位置【英文标题】:How to change location of my location button in google maps using swift 【发布时间】:2017-11-30 08:27:13 【问题描述】:我在我的项目中使用谷歌地图我想显示我的位置按钮 有点上升我应该如何使用 swift 来做到这一点
【问题讨论】:
@ Amma teja :- 我不认为你可以改变我的位置按钮的位置,但你可以做的是,创建你自己的按钮并给它任何你想要的框架。 【参考方案1】:您可以通过设置地图视图的填充来更改MapControls 的位置。
let mapView = GMSMapView()
mapView.isMyLocationEnabled = true
mapView.settings.myLocationButton = true
mapView.padding = UIEdgeInsets(top: 0, left: 0, bottom: 50, right: 50)
它将改变我的位置控件的填充。从底部 50 像素和从右侧 50 像素
请参考下面的屏幕截图,它从底部和右侧添加了 50px 的填充。
【讨论】:
但是您可以看到当前位置的位置也发生了变化,但是我想在向上移动 myLocationButton 的同时保持当前位置中心。请问我该怎么做? @subramanian:这里有一点疑问,我只想改变我的位置按钮的位置。也不是“谷歌”文字 为此,一旦您更改位置按钮并按下按钮,当前位置将不会出现在中心位置。 如何启用地图工具栏...? 我们可以隐藏这个按钮吗?【参考方案2】:和 Subramanian 一样,这非常有效:
mapView.padding = UIEdgeInsets(top: 0, left: 0, bottom: 50, right: 0)
如果您的应用中有导航栏,那就完美了。
【讨论】:
【参考方案3】:swift 4 更新:仅更改我的位置按钮的位置
for object in self.mapView.subviews
if(object.theClassName == "GMSUISettingsPaddingView")
for view in object.subviews
if(view.theClassName == "GMSUISettingsView")
for btn in view.subviews
if(btn.theClassName == "GMSx_QTMButton")
var frame = btn.frame
frame.origin.y = frame.origin.y - 100
btn.frame = frame
public extension NSObject
public var theClassName: String
return NSStringFromClass(type(of: self))
【讨论】:
【参考方案4】:这是我用于 Google Maps SDK 5.1.0 的函数,因为按钮的类已重命名为“GMSx_MDCFloatingButton”,以防有人需要更新的方法。
还取决于您的实现,您可能希望在 viewDidAppear() 上调用它。
func moveLocationButton()
for object in self.googleMapsView!.subviews
if(object.thisClassName == "GMSUISettingsPaddingView")
for view in object.subviews
if(view.thisClassName == "GMSUISettingsView")
for btn in view.subviews
if(btn.theClassName == "GMSx_MDCFloatingButton")
var frame = btn.frame
frame.origin.x = frame.origin.x - 50
frame.origin.y = frame.origin.y - 150
btn.frame = frame
public extension NSObject
var thisClassName: String
return NSStringFromClass(type(of: self))
【讨论】:
【参考方案5】:使用这个函数并在 viewDidLayoutSubviews()
调用它func changeLocationBtnFrame()
self.mapView.settings.myLocationButton = true
for obj in self.mapView.subviews
if String(describing: obj.classForCoder) == "GMSUISettingsPaddingView"
for viw in obj.subviews
if String(describing: viw.classForCoder) == "GMSUISettingsView"
for btn in viw.subviews
if String(describing: btn.classForCoder) == "GMSx_MDCFloatingButton"
var frame = btn.frame
btn.frame = CGRect(x: 316, y: 0, width: 56, height: 56)
//USE you want frame this line
break
break
break
【讨论】:
以上是关于如何使用 swift 在谷歌地图中更改我的位置按钮的位置的主要内容,如果未能解决你的问题,请参考以下文章