我返工this tutorial适用于 iOS 版 Google map SDK。我想通过提供中心点和定义水平和垂直范围的跨度来定义它。
我读过this tutorial of Google Maps SDK for iOS我认为应该使用 zoomAtCooperative:forMeters:perPoints:
在我看来,这不太正确
func mapRegion() -> MKCoordinateRegion {
var region: MKCoordinateRegion = MKCoordinateRegion(center: CLLocationCoordinate2DMake(0, 0), span: MKCoordinateSpanMake(0, 0))
var initialLoc: Location = self.trek.locations.firstObject as! Location
var minLat = (initialLoc as Location).latitude.doubleValue
var minLng = (initialLoc as Location).longitude.doubleValue
var maxLat = (initialLoc as Location).latitude.doubleValue
var maxLng = (initialLoc as Location).longitude.doubleValue
for location in self.trek.locations.array {
if (location as! Location).latitude.doubleValue < minLat {
minLat = (location as! Location).latitude.doubleValue;
}
if (location as! Location).longitude.doubleValue < minLng {
minLng = (location as! Location).longitude.doubleValue;
}
if (location as! Location).latitude.doubleValue > maxLat {
maxLat = (location as! Location).latitude.doubleValue;
}
if (location as! Location).longitude.doubleValue > maxLng {
maxLng = (location as! Location).longitude.doubleValue;
}
}
region.center.latitude = (minLat + maxLat) / 2.0;
region.center.longitude = (minLng + maxLng) / 2.0;
region.span.latitudeDelta = (maxLat - minLat) * 1.1; // 10% padding
region.span.longitudeDelta = (maxLng - minLng) * 1.1; // 10% padding
return region;
}
最佳答案
您必须使用GMSColinedBounds
func mapRegion() -> GMSCoordinateBounds {
var path = GMSMutablePath()
var bounds = GMSCoordinateBounds(path: path)
var initialLoc: Location = self.trek.locations.firstObject as! Location
var minLat = (initialLoc as Location).latitude.doubleValue
var minLng = (initialLoc as Location).longitude.doubleValue
var maxLat = (initialLoc as Location).latitude.doubleValue
var maxLng = (initialLoc as Location).longitude.doubleValue
for location in self.trek.locations.array {
if (location as! Location).latitude.doubleValue < minLat {
minLat = (location as! Location).latitude.doubleValue;
}
if (location as! Location).longitude.doubleValue < minLng {
minLng = (location as! Location).longitude.doubleValue;
}
if (location as! Location).latitude.doubleValue > maxLat {
maxLat = (location as! Location).latitude.doubleValue;
}
if (location as! Location).longitude.doubleValue > maxLng {
maxLng = (location as! Location).longitude.doubleValue;
}
}
path.addCoordinate(CLLocationCoordinate2DMake(minLat, minLng))
path.addCoordinate(CLLocationCoordinate2DMake(maxLat, maxLng))
return bounds;
}
self.viewMap?.animateWithCameraUpdate(GMSCameraUpdate.fitBounds(mapRegion(), withPadding: 15.0))
关于ios - 使用 Google Maps SDK 的哪个方法,例如 MapKit 的 struct MKCooperativeRegion,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31631623/