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

4

我遇到了困难。

希望有人可以给我正确的输入!

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

目前,我只是使用此代码(DEFAULT_ZOOM15.f)将地图居中于当前POI坐标:

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个回答

1
为了在地图中心显示POI,以及将用户位置显示在地图的一侧,您应该派生第三个位置点,将用户llc相对于POI的距离在POI的另一侧进行镜像。
如果我们可以忽略地球的曲率,这就是简单的向量加法。
即。
loc3 = poiLoc + (poiLoc - userLoc) 
     = 2*poiLoc - userLoc;

然后,您的地图矩形由用户位置和loc3定义。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接