如何使用 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 在谷歌地图中更改我的位置按钮的位置的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 android studio 更改 Google 地图中“我的位置”按钮的位置

在谷歌地图中保留用户位置中心 - Swift

我可以在 Android 地图中更改我的位置按钮吗

如何在谷歌地图应用程序中从另一个位置显示当前位置?

在谷歌地图android中更改标记的原点

Android - 我如何在谷歌地图中实现位置准确性