如何在不点击标记的情况下在 iOS 谷歌地图中显示信息窗口?
Posted
技术标签:
【中文标题】如何在不点击标记的情况下在 iOS 谷歌地图中显示信息窗口?【英文标题】:How to show a Info window in iOS Google maps without tapping on Marker? 【发布时间】: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];
根据上面的代码,标记按预期显示在地图视图中。 点击标记会在谷歌地图中显示“我的位置”信息窗口,这很好。
当用户进入自定义地图屏幕时,我们是否可以通过编程方式显示信息窗口?
【问题讨论】:
【参考方案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
【讨论】:
以上是关于如何在不点击标记的情况下在 iOS 谷歌地图中显示信息窗口?的主要内容,如果未能解决你的问题,请参考以下文章