我正在開發iOS應用程序,包括GoogleMaps。 GoogleMaps SDK for iOS的實現過程尚未完成。如何計算GMSCamera縮放
但我想知道如何計算GMSCamera zoom 在Map上顯示整個路線。
在蘋果地圖,我們使用跨度,也許。 但GoogleMaps SDK沒有跨度。
請給我建議。
我正在開發iOS應用程序,包括GoogleMaps。 GoogleMaps SDK for iOS的實現過程尚未完成。如何計算GMSCamera縮放
但我想知道如何計算GMSCamera zoom 在Map上顯示整個路線。
在蘋果地圖,我們使用跨度,也許。 但GoogleMaps SDK沒有跨度。
請給我建議。
這裏是一個函數,它可以幫助,因爲這從一個的MKMapView是「谷歌兼容」
- (NSInteger)getZoomLevel
{
MKMapView *map = (MKMapView *)self.mapView;
CLLocationDegrees longitudeDelta = map.region.span.longitudeDelta;
CGFloat mapWidthInPixels = map.bounds.size.width;
double zoomScale = longitudeDelta * 85445659.44705395 * M_PI/(180.0 * mapWidthInPixels);
double zoomer = 20 - log2(zoomScale);
if (zoomer < 0) zoomer = 0;
return (NSInteger)zoomer;
}
如果你可以抓住的座標,並把它們放到相反,你應該確定計算個zoomLevel。
我張貼的答案,類似的問題在這裏:
How to setRegion with google maps sdk for iOS?
它採用了類似的方法,以李的回答是:轉換緯度/經度像素,計算規模,然後縮放級別。
李的方法是正確的,但數學是不正確的,基於谷歌地圖的縮放
1個雙打 屏幕上增加縮放級別的世界寬度IOS SDK文檔。因此,在縮放級別N處,世界的寬度大約是 256 * 2^N,即在縮放級別2時,整個世界大約爲1024點。請注意,縮放級別不需要是整數。地圖允許的縮放級別的範圍取決於多個因素,包括位置,地圖類型和屏幕大小。
計算變焦數學應該是
zoom = log2(360 * mapView.bounds.size.width/ longitudeDelta) - 8;
逆問題的解決方案如下:'longitudeDelta = 360 * mapView.bounds.size.width /(1 <<(zoom + 8) )' – k06a
靜,你的數學是正確的經度,但緯度它必須是比較麻煩一些。墨卡託投影處理緯度和經度的方式不同。我已經發布了正確的代碼在這裏:https://stackoverflow.com/a/16217785/2291425
其實你可以使用fitBounds SDK的最新版本:
GMSCoordinateBounds *bounds = [[GMSCoordinateBounds alloc] initWithPath:yourPath];
//There are several useful init methods for the GMSCoordinateBounds!
GMSCameraUpdate *update = [GMSCameraUpdate fitBounds:bounds];
[mapView_ moveCamera:update];
這樣,你讓數學谷歌,我敢肯定他們是真的很擅長。
使用GMSCoordinateBounds。你可以使用不同的參數來擬合地圖,例如cooodinates,bounds等。
GMSCoordinateBounds * bounds = [[GMSCoordinateBounds alloc] initWithPath:path];
斯威夫特:
//Create a path
let path = GMSMutablePath()
//for each point you need, add it to your path
let position = CLLocationCoordinate2DMake(latitude, longitude)
path.add(position)
//Update your mapView with path
let mapBounds = GMSCoordinateBounds(path: path)
let cameraUpdate = GMSCameraUpdate.fit(mapBounds)
mapView.moveCamera(cameraUpdate)
非常感謝您! 明天我會試試這個! – AlfaromeoCorse
這幫忙嗎? –
計算縮放比例的數學是正確的嗎?爲什麼我在谷歌地圖上縮小比例,與MapKit地圖相同,經度相同... – Jing