我试图找出一种直接的方法来确定在Google Maps for iOS中,如果给定的GMSMarker在可见地图的范围内.在Javascript API中似乎有解决方案,但除了根据这篇文章做一些复杂的推理之外,似乎没有办法.
Dav*_*ole 15
基于Andy有用响应的代码示例:
- (void)snapToMarkerIfItIsOutsideViewport:(GMSMarker *)m{
GMSVisibleRegion region = _mapView.projection.visibleRegion;
GMSCoordinateBounds *bounds = [[GMSCoordinateBounds alloc] initWithRegion:region];
if (![bounds containsCoordinate:m.position]){
GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:m.position.latitude
longitude:m.position.longitude
zoom:_mapView.camera.zoom];
[self.mapView animateToCameraPosition: camera];
}
}
Run Code Online (Sandbox Code Playgroud)
And*_*ndy 13
使用GMSVisibleRegion检索视口的边界,并使用它创建GMSCoordinateBounds.打电话containsCoordinate
,传递标记的位置.如果标记位于视口内,则应返回true,否则返回false.
答案的 swift 4 版本。如果标记在屏幕区域内,则返回布尔值
func isMarkerWithinScreen(marker: GMSMarker) -> Bool {
let region = self.mapView.projection.visibleRegion()
let bounds = GMSCoordinateBounds(region: region)
return bounds.contains(marker.position)
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5420 次 |
最近记录: |