0

我在这里是因为我在使用适用于 iOS 的 Google Maps SDK 时遇到问题。

我的地图运行正常,一切正常。

在我的项目中,我试图在 2 个标记之间进行动态缩放,以便在同一帧中看到它们。所以这是我的代码(我也在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

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

谢谢 !!:)

4

2 回答 2

2

您从如何计算 GMSCamera 缩放中获得的示例代码显示了如何使用 an 来完成MKMapView- 目的是将其调整为 a 的等效代码GMSMapView(不直接使用代码)。

这里有一个更全面的答案(专门针对GMSMapView):

如何使用适用于 iOS 的 google maps sdk 设置区域?

然而,这两个问题都是在谷歌添加一个fitBounds应该能够使用而不是编写自己的代码的方法之前被问到的:

https://developers.google.com/maps/documentation/ios/reference/interface_g_m_s_camera_update

我注意到虽然有人报告说这fitBounds对他们不起作用 - 所以看看你的情况。

于 2013-06-06T06:48:55.847 回答
1

问题是您正在访问GMSMapViewRegion不存在的 region 方法(map.regionin line: CLLocationDegrees longitudeDelta = map.region.span.longitudeDelta;)。

您正在使用不兼容的用于 Google 中 Apple 地图实现的代码。

于 2013-06-06T05:38:23.893 回答