dha*_*hah 4 google-maps ios swift
我想用谷歌地图窗口中的所有标记进行自动缩放.
以下是我的代码
func loadGoogleMap()
{
dispatch_async(dispatch_get_main_queue(),
{
self.googleMapView.clear()
self.googleMapView.delegate = self
var visibleRegion : GMSVisibleRegion = self.googleMapView.projection.visibleRegion()
var bounds = GMSCoordinateBounds(coordinate: visibleRegion.nearLeft, coordinate: visibleRegion.nearRight)
var count = 1
for Prop: Property in self.properties
{
if Prop.propLat != ""
{
// println("lat >> \(Prop.propLat) lang >> \(Prop.propLang)")
var latStr = Prop.propLat
var latDbl : Double = Double(latStr.floatValue)
var langStr = Prop.propLang as NSString
var langDbl : Double = Double(langStr.floatValue)
var marker = GMSMarker()
if count == 0
{
// let initialLocation = CLLocationCoordinate2DMake(langDbl,latDbl)
// let initialDirection = CLLocationDirection()
//
// let camera = GMSCameraPosition.cameraWithTarget(initialLocation, zoom: 5)
// self.googleMapView.camera = camera
//
}
marker.position = CLLocationCoordinate2DMake(langDbl,latDbl)
marker.appearAnimation = kGMSMarkerAnimationPop
marker.icon = UIImage(named: "red_\(Prop.propSequence)")
marker.title = Prop.propBuildingName as String
marker.snippet = Prop.propCode as String
marker.infoWindowAnchor = CGPointMake(0.44, 0.45);
bounds.includingCoordinate(marker.position)
marker.map = self.googleMapView
count++
}
}
self.googleMapView.animateWithCameraUpdate(GMSCameraUpdate.fitBounds(bounds, withPadding: 30.0))
})
}
Run Code Online (Sandbox Code Playgroud)
上面的swift代码也添加在view willappear和viewdidload方法上.有人可以帮助我在上面的代码中做错了什么.
小智 12
@IBOutlet weak var viewMap: GMSMapView!
var markers = [GMSMarker]()
var bounds = GMSCoordinateBounds()
for marker in self.markers {
bounds = bounds.includingCoordinate(marker.position)
}
viewMap.animate(with: GMSCameraUpdate.fit(bounds, with: UIEdgeInsetsMake(50.0 , 50.0 ,50.0 ,50.0)))
Run Code Online (Sandbox Code Playgroud)
小智 1
在您的代码中您使用了:
var bounds = GMSCoordinateBounds(coordinate: visibleRegion.nearLeft, coordinate: visibleRegion.nearRight)Run Code Online (Sandbox Code Playgroud)
如果您阅读文档中的参考,您就会明白现在您只是指定东南和西南坐标。
对于边界框,您需要一对 SE/NW 或 NE/SW 坐标。所以你需要将该行更改为:
var bounds = GMSCoordinateBounds(coordinate: visibleRegion.nearLeft, coordinate: visibleRegion.farRight)Run Code Online (Sandbox Code Playgroud)
希望这有帮助,干杯!
PS:在您的问题中,您没有具体说明边界问题是什么。因此,如果这不是解决方案,请解释问题所在。:)
| 归档时间: |
|
| 查看次数: |
5721 次 |
| 最近记录: |