- [GMSMapView区域]:无法识别的选择器 - Google Maps SDK for iOS的问题

时间:2013-06-06 05:25:22

标签: ios google-maps mkmapview google-maps-sdk-ios

我在这里是因为我的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

有什么想法吗?或者,如果有人获得最佳示例代码以获得正确的缩放。

谢谢!! :)

2 个答案:

答案 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地图实施的代码,这些代码不兼容。