【问题标题】:How to show a Info window in iOS Google maps without tapping on Marker?如何在不点击标记的情况下在 iOS 谷歌地图中显示信息窗口?
【发布时间】:2013-03-26 20:24:56
【问题描述】:

我是 iOS 开发的新手。这与 Google Maps iOS SDK 中的标记信息窗口有关。

我了解,我们可以使用 GMSMarkerOption 创建带有信息窗口的标记。

GMSMarkerOption *myLocationOption = [GMSMarkerOption alloc];
myLocationOption .title = @"My Location";
myLocationOption .snippet = @"Lat:...., Lang:....";

[mapView addMarkerOption:myLocationOption];

根据上面的代码,标记按预期显示在地图视图中。 点击标记会在谷歌地图中显示“我的位置”信息窗口,这很好。

当用户进入自定义地图屏幕时,我们是否可以通过编程方式显示信息窗口?

【问题讨论】:

    标签: ios google-maps infowindow google-maps-sdk-ios


    【解决方案1】:

    这在 Google Maps SDK 上有所改变,更容易理解:

    GMSMarker *marker = [[GMSMarker alloc] init];
    marker.position = coordinate;
    marker.title = @"Location selected";
    marker.snippet = @"Testing";
    marker.map = mapView_;
    
    //Show info window on map
    [mapView_ setSelectedMarker:marker];
    

    您现在使用 setSelectedMarker 方法来显示标记的信息窗口

    【讨论】:

    • 我使用了上面的代码,但 infowindow 仅在我点击标记时显示。无论如何要同时显示 infowindow 和 pin 吗??
    • @BandishDave,上面的代码应该可以满足您的需求。如果没有,可能 SDK 上又发生了一些变化
    • @BandishDave - setSelectedMarker 自 2014 年 12 月 26 日起仍然有效(SDK v1.9.1)。
    【解决方案2】:
    GMSMarkerOptions *myLocationOptions = [GMSMarkerOptions options];
    myLocationOptions.title = @"My Location";
    myLocationOptions.snippet = @"Lat:...., Lang:....";
    
    mapView.selectedMarker = [mapView addMarkerWithOptions:myLocationOptions];
    

    (注意是选项,不是选项)

    【讨论】:

      【解决方案3】:

      Swift 3.0

      func addMarker(_ location:CLLocation){
              var locationMarker: GMSMarker!
              if locationMarker != nil {
                  locationMarker.map = nil
              }
              locationMarker = GMSMarker(position: location.coordinate)
              locationMarker.map = mapView
              locationMarker.appearAnimation = kGMSMarkerAnimationPop
              locationMarker.icon = GMSMarker.markerImage(with: UIColor.green)
              locationMarker.opacity = 0.85
              locationMarker.isFlat = true
              locationMarker.snippet = "My Location"
              mapView.selectedMarker=locationMarker
      
          }
      

      下面是答案

      mapView.selectedMarker=locationMarker
      

      【讨论】:

        【解决方案4】:

        斯威夫特 3

        self.mapView.selectedMarker = marker

        在swift 3的情况下,你可以打开snipet使用selectedMarker

        如果您以类似于以下方式创建标记:

        marker.position = CLLocationCoordinate2D(latitude: 34.1331168, longitude: -118.3550723)
        marker.title = "My super place name"
        marker.snippet = "Are you looking a place to play? This is your place! "
        marker.appearAnimation = kGMSMarkerAnimationPop
        marker.map = self.mapView
        

        【讨论】:

          【解决方案5】:
             // Below line will shows the infowindow for marker with out tapping on it
             [mapView setSelectedMarker:myLocationOptions]; // myLocationOptions is your desired GMSMarker to show Infowindow with out tapping .
          

          快乐编码:)

          【讨论】:

            【解决方案6】:

            mMapView.selectedMarker = 标记

            【讨论】:

              【解决方案7】:

              GMSMarkerOptions 已弃用。使用它可以帮助我在不点击的情况下显示信息窗口-

              func mapView(_ mapView: GMSMapView, idleAt position: GMSCameraPosition) {
                  myMapView.selectedMarker = myGMSMarker
              }
              

              【讨论】:

                【解决方案8】:

                --> 它显示多个信息窗口而不点击标记。您可以轻松自定义它。

                因为我在 0..

                        let dict = arrNearByPlacesArray.object(at: i) as? NSDictionary ?? [:]
                
                        let lat = dict.object(forKey: "latitude") as? String ?? ""
                         let long = dict.object(forKey: "longitude") as? String ?? ""
                        let company_id = dict.object(forKey: "company_id") as? String ?? ""
                        let totaljobs = dict.object(forKey: "totaljobs") as? String ?? ""
                
                
                        let location = CLLocationCoordinate2D(latitude: Double(lat) ?? 0.0, longitude: Double(long) ?? 0.0)
                        print("location: \(location)")
                        let marker = GMSMarker()
                        //marker.icon = UIImage(named: "maps")
                
                        let viewData = Bundle.main.loadNibNamed("MarkerXibView", owner: self, options: nil)?.first as! MarkerXibView .      //UIView
                
                
                        marker.iconView = viewData .      //UIView
                
                
                        marker.position = location
                        marker.accessibilityLabel  = company_id
                        marker.map = vwGoogleMap
                

                }

                【讨论】:

                  猜你喜欢
                  • 2014-07-12
                  • 1970-01-01
                  • 1970-01-01
                  • 2013-09-13
                  • 2014-10-15
                  • 2017-07-26
                  • 2017-05-08
                  • 1970-01-01
                  相关资源
                  最近更新 更多