GMSCoordinateBounds 包括坐标在 Google Maps SDK for iOS 中无法正常工作

Posted

技术标签:

【中文标题】GMSCoordinateBounds 包括坐标在 Google Maps SDK for iOS 中无法正常工作【英文标题】:GMSCoordinateBounds IncludingCoordinates not working properly in Google Maps SDK for iOS 【发布时间】:2013-06-08 21:08:58 【问题描述】:

我正在尝试使用fitBounds 方法将我的所有标记都放入谷歌地图相机视图中。所以我将我的标记存储在markersArray 中,并使用以下代码使用markersArray 中的第一个和第二个标记来初始化 GMSCoordinateBounds,这工作正常。

然后,当我尝试使用includingCoordinatemarkersArray 添加第三个标记时,我看不到边界在其值和地图中都没有更新任何内容,它是否相应地更改了相机。

奇怪的是,在Google maps SDK for ios docs 中,它说 GMSCoordinateBounds “是不可变的,构造后不能修改”。那有意义吗?构建它们后我不能改变边界吗?那么如何在边界上添加更多坐标呢?

这是我的代码:

    GMSCoordinateBounds *bounds= [[GMSCoordinateBounds alloc] init];

    GMSMarker *marker1 = [markersArray objectAtIndex:0];
    GMSMarker *marker2 = [markersArray objectAtIndex:1];
    GMSMarker *marker3 = [markersArray objectAtIndex:2];

    bounds = [[GMSCoordinateBounds alloc] initWithCoordinate:marker1.position    coordinate:marker2.position];

    //Add the 3rd marker to the bounds
    [bounds includingCoordinate:marker3.position];

    GMSCameraUpdate *update = [GMSCameraUpdate fitBounds:bounds withPadding:600.0f];
    [mapView_ animateWithCameraUpdate:update];

【问题讨论】:

【参考方案1】:

GMSCoordinateBounds includingCoordinate: 方法返回一个包含原始边界和新位置组合的新边界,它不会修改您调用它的对象。

所以你需要这样的东西:

bounds = [bounds includingCoordinate: marker3.position];

【讨论】:

感谢它现在工作正常。很明显,我问起来很尴尬。 你刚刚拯救了我的一天!谢谢 google 怎么没有包含一个接收位置数组并返回适合所有位置的边界的方法?现在实现的方式强制您仅使用两个位置对其进行初始化,然后循环其余调用包括坐标。我错过了更好的方法吗? 你是个救命恩人,我没注意返回值,thnx 这里和我一样哈哈非常好

以上是关于GMSCoordinateBounds 包括坐标在 Google Maps SDK for iOS 中无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

对 GMSCoordinateBounds 数组的 Swift 解码 JSON 响应

MKMapView 边界

生成多个随机(x,y)坐标,不包括重复?

第七节双目视觉之空间坐标计算

Python OpenCV 单目相机标定坐标转换相关代码(包括鱼眼相机)

1)定义一个Point类,其属性包括点的坐标,提供计算两点之间距离的方法; 2)定义一个圆形类,其属性包括圆心和半径; 3)创建两个圆形对象,提示用户输入圆心坐标和半径,判断两个圆是否相交,并输出结果