我在这里是因为我的Google Maps SDK for iOS存在问题。
我的地图运行正常,一切正常。
在我的项目中,我试图在两个标记之间进行动态缩放,以便在同一帧中看到它们。所以这是我的代码(我也在stackoverflow中得到它):
- (NSInteger)getZoomLevel
{
MKMapView *map = (MKMapView *)mapView_;
CLLocationDegrees longitudeDelta = map.region.span.longitudeDelta;
CGFloat mapWidthInPixels = map.bounds.size.width;
double zoomScale = longitudeDelta * 85445659.44705395 * M_PI / (180.0 * mapWidthInPixels);
double zoomer = 20 - log2(zoomScale);
if ( zoomer < 0 ) zoomer = 0;
return (NSInteger)zoomer;
}
这就是我所说的:
GMSCameraUpdate *zoomCamera = [GMSCameraUpdate zoomIn];
[mapView_ animateWithCameraUpdate:zoomCamera];
CLLocationCoordinate2D myPosition = CLLocationCoordinate2DMake(mapView_.myLocation.coordinate.latitude, mapView_.myLocation.coordinate.longitude);
GMSCameraUpdate *myPositionCam = [GMSCameraUpdate setTarget:myPosition];
[mapView_ animateToZoom:[self getZoomLevel]];
[mapView_ animateWithCameraUpdate:myPositionCam];
重点是在同一帧中看到2个标记。
当我尝试运行它时,这就是我所拥有的:
-[GMSMapView region]: unrecognized selector sent to instance 0x210527e0
有什么想法吗?或者,如果有人获得最佳示例代码以获得正确的缩放。
谢谢!! :)
答案 0 :(得分:2)
您从How to calculate GMSCamera zoom获得的示例代码展示了如何使用MKMapView
- 它的目的是使其适应GMSMapView
的等效代码(不使用代码直接)。
这里有一个更全面的答案(特别针对GMSMapView
):
How to setRegion with google maps sdk for iOS?
但是,在谷歌添加fitBounds
方法之前,这两个问题都被提出了,这个方法应该可以使用,而不是编写自己的代码:
https://developers.google.com/maps/documentation/ios/reference/interface_g_m_s_camera_update
我注意到somebody reported fitBounds
对他们不起作用 - 所以看看你是怎么做的。
答案 1 :(得分:1)
问题是您正在访问不存在的GMSMapViewRegion
的区域方法(map.region
在线:CLLocationDegrees longitudeDelta = map.region.span.longitudeDelta;
)。
您正在使用适用于Google的Google地图实施的代码,这些代码不兼容。