我正在使用mapbox-iOS-SDK 3.2.3
,無法找到任何屬性或像這樣控制地圖邊界。我需要限制用戶的可見區域。目前的SDK版本有可能嗎?如何限制mapbox MGLMapView中的地圖邊界?
回答
沒有什麼內置於當前版本Mapbox的,看起來像它會做你想要什麼。您可能能夠通過
- 在地圖視圖委託實施
mapViewRegionIsChanging:
或mapView:regionDidChangeAnimated:
- 在這些方法中得到類似的東西,檢查當前區域。如果超出了所需區域,請將地圖視圖重置爲所需區域內的某個區域。也就是說,只要地圖視圖開始移動到區域之外,就讓它返回。
這可能會工作,但如果用戶試圖向目標區域外的滾動它可能使視圖「口吃」。我不知道你的應用是做什麼的,但是可能值得考慮(a)這是否真的有必要,以及(b)是否有更好的方法來避免你期望的任何問題,而不是限制地圖視圖滾動。
好了,因爲我看到的,問題是更廣泛和完全一樣的MapKit 。好吧,我會嘗試使用委託方法來解決這個問題。不幸的是,這是我們客戶對地圖框架的主要要求之一。謝謝你的幫助! – ShurupuS
這是一個開源的框架,所以你總是可以考慮添加你自己的委託方法(也許增加一個'shouldMapViewRegionChange'方法)或其他手段來獲得你想要的。 –
我把這個想法從@Tom Harrington,並多觀察,多口吃或動畫jankiness如何同時保持約束已知Mapbox內的用戶有目標實現的委託。我提出了他的答案,但也想分享這個例子。
這裏是一個斯威夫特代表,填補了對mapViewRegionIsChanging
- 委託的主要目的是測試經驗仍然是令人高興的客戶(是)
- 可以委託妥善保管用戶在不經常調用委託的範圍內? (仍有待驗證)
- 用途Balboa公園,正方形Mapbox只有
MGLCoordinateBounds
- 檢查客戶滾動太遠北
- 的概念太遠是由一些寬容檢查,
epsilon
檢查出界四面應該直截了當
func mapViewRegionIsChanging (mapView: MGLMapView) { let viewBounds = mapView.visibleCoordinateBounds // Set the map's bounds to Balboa Park, San Diego let boundsBalboaPark = MGLCoordinateBounds( sw: CLLocationCoordinate2D(latitude: 32.71942, longitude: -117.15914), ne: CLLocationCoordinate2D(latitude: 32.74093, longitude: -117.13374)) let deltaNorth = viewBounds.ne.latitude - boundsBalboaPark.ne.latitude let epsilon = 0.025 // Magic number for tolerance of how far 'north' we allow (in degrees); Q.E.D meters if(deltaNorth > epsilon) { mapView.setVisibleCoordinateBounds(boundsBalboaPark, animated: true) } }
此動畫顯示移動的MapView太遠北巴爾博亞公園的。你看到的口吃是真實的,但可以接受。
我建議不要跳回到原來的中心位置,而要跳回到原來的範圍內。這將顯着減少跳躍。 –
我同意。另一個好主意是讓觀看者的最小變焦動畫,這樣客戶就可以獲得重新定位自己的體驗。 – RobLabs
- 1. 如何在MapBox MGLMapView上繪製圓形?
- 2. 將Mapbox地圖繪製到動態標記的邊界
- 3. Mapbox Android GL邊界
- 4. 谷歌地圖API 3 - 限制平移/地圖邊界
- 5. 限制到達地圖邊界或任何對象的移動
- 6. Mapbox白色邊框地圖
- 7. 限制MapBox地理編碼
- 8. 谷歌地圖邊界(將位置數據限制爲緯度/長邊界)
- 9. 設置地圖邊界
- 10. 圖片翻譯限制邊界
- 11. 如何找出對圖形API的限制參數的邊界
- 12. 當我更改地圖樣式(Mapbox)時,MGLMapView隱藏/無法加載註釋
- 13. 限制Mapbox縮放
- 14. 如何防止在mapbox中包裹世界地圖?
- 15. Nominatim邊界框限制?
- 16. 必應地圖 - 限制平移到邊界區域
- 17. 限制谷歌地圖自動完成歐洲邊界
- 18. 谷歌地圖繪製多邊形並縮放到其界限
- 19. 如何限制在Android圖像平移邊界imageView
- 20. 地圖:如何刪除省份邊界
- 21. 如何通過OpenLayers 3中的地圖邊界繪製測地線?
- 22. mapbox-gl:從中心點,縮放級別和尺寸計算地圖邊界
- 23. 限制Mapbox僅向南/向南平移?
- 24. Wp8地圖邊界矩形
- 25. 如何在cartodb中使用mapbox地圖
- 26. 邊界列表上的地圖BGL圖
- 27. 設置MovieClip(AS3)的邊界限制
- 28. 限制SVG到div的邊界
- 29. 如何獲取谷歌地圖的多邊形邊界?
- 30. 如何限制散點視圖邊界內的散點圖項? - 表面SDK
我不知道我明白你想要做什麼。 –
我想爲地圖設置邊界,例如只顯示一個城市。因此用戶可以縮放,平移和使用此地圖進行常規操作,但只能在有限的區域內進行。 – ShurupuS
Mapbox似乎現在有一個內置的解決方案:https://www.mapbox.com/ios-sdk/examples/constraining-gestures/ – Stonetip