GMSMapView:以坐标为中心,缩小以显示用户位置

时间:2014-07-21 17:50:29

标签: ios google-maps gmsmapview

我被困在这上面了。 我希望有人能给我正确的意见!

我正在使用GMSMapview显示兴趣点(GMSMarkers)。

目前,我只是使用此代码将地图置于当前POI坐标的中心( DEFAULT_ZOOM 15.f ):

GMSCameraPosition *newPosition =
             [GMSCameraPosition cameraWithLatitude:activePOI.coordinate.latitude
                                         longitude:activePOI.coordinate.longitude
                                              zoom:DEFAULT_ZOOM
                                           bearing:0.    //True north
                                      viewingAngle:0.];  //Facing down

[self.mapView animateToCameraPosition:newPosition];

我尝试使用 GMSCoordinateBounds 显示POI和用户位置,使用以下代码:

GMSCoordinateBounds *cb =
             [[GMSCoordinateBounds alloc] initWithCoordinate:activePOI.coordinate 
             coordinate:user.coordinate];

[GMSCameraUpdate fitBounds:cb];

效果很好,但两个位置都显示在地图的角落。

我需要在中心显示POI,但同时显示用户位置。

关于如何实现这一目标的任何想法?

干杯。

1 个答案:

答案 0 :(得分:1)

要显示中心的POI以及地图边缘的用户位置,您应该派生第三个位置点,以反映用户ID与POI另一侧POI的相对距离。

如果我们被允许忽略地球的曲率,这就是简单的向量加法

即。

loc3 = poiLoc + (poiLoc - userLoc) 
     = 2*poiLoc - userLoc;

然后你的map rect由userLoc和loc3定义。