【问题标题】:How to change location of my location button in google maps using swift如何使用 swift 在谷歌地图中更改我的位置按钮的位置
【发布时间】:2017-11-30 08:27:13
【问题描述】:

我在我的项目中使用谷歌地图我想显示我的位置按钮 有点上升我应该如何使用 swift 来做到这一点

【问题讨论】:

  • @ Amma teja :- 我不认为你可以改变我的位置按钮的位置,但你可以做的是,创建你自己的按钮并给它任何你想要的框架。

标签: ios iphone google-maps google-maps-api-3 currentlocation


【解决方案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
                }
            }
        }
        

        【讨论】:

          猜你喜欢
          • 2019-08-11
          • 1970-01-01
          • 1970-01-01
          • 2016-08-15
          • 1970-01-01
          • 2015-09-11
          • 2023-03-28
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多