【发布时间】:2017-11-30 08:27:13
【问题描述】:
【问题讨论】:
-
@ Amma teja :- 我不认为你可以改变我的位置按钮的位置,但你可以做的是,创建你自己的按钮并给它任何你想要的框架。
标签: ios iphone google-maps google-maps-api-3 currentlocation
【问题讨论】:
标签: ios iphone google-maps google-maps-api-3 currentlocation
您可以通过设置地图视图的填充来更改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 的填充。
【讨论】:
和 Subramanian 一样,这非常有效:
mapView.padding = UIEdgeInsets(top: 0, left: 0, bottom: 50, right: 0)
如果您的应用中有导航栏,那就完美了。
【讨论】:
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))
}
}
【讨论】:
这是我用于 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))
}
}
【讨论】:
使用这个函数并在 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
}
}
}
【讨论】: