gpt4 book ai didi

iphone - 如何以用户位置为中心设置 map 矩形?

转载 作者:行者123 更新时间:2023-11-28 19:12:13 24 4
gpt4 key购买 nike

我有一个带有一个图钉和用户位置的 mapView。我做到了,因此设置了 VisibleMapRect,以便可以看到两个引脚。

我遇到的问题是我正在使用 MKUserTrackingModeFollowWithHeading 来显示用户移动 Action ,当我像这样设置矩形时,移动非常不稳定。我相信这是因为用户定位针不在 map 的中心。

如何让两个图钉都可见,但将用户位置保持在中心位置?

这是我的代码,用于启动位置并设置矩形。[locationManager startUpdatingLocation];

    // Start heading updates.
if ([CLLocationManager headingAvailable]) {
locationManager.headingFilter = kCLHeadingFilterNone;
[locationManager startUpdatingHeading];

//set the view to fit both the pins
MKMapPoint annotationPoint = MKMapPointForCoordinate(MapView.userLocation.coordinate);
MKMapRect zoomRect = MKMapRectMake(annotationPoint.x, annotationPoint.y, 0, 0);
for (id <MKAnnotation> annotation in MapView.annotations)
{
if (![annotation isKindOfClass:[MKUserLocation class]] ) {
MKMapPoint annotationPoint = MKMapPointForCoordinate(annotation.coordinate);
MKMapRect pointRect = MKMapRectMake(annotationPoint.x, annotationPoint.y, 0, 0);
zoomRect = MKMapRectUnion(zoomRect, pointRect);

}
}
NSLog(@"%f",zoomRect.size.height);
NSLog(@"%f",zoomRect.size.width);


[MapView setVisibleMapRect:zoomRect animated:NO];

}

我已经尝试注释掉设置矩形的部分并且用户的移动很流畅,所以我可以说我的问题是这段代码。

我也试过在矩形之后设置中心点

[MapView setCenterCoordinate:MapView.userLocation.coordinate animated:YES];

这似乎没有用。在之后设置它可能会使另一个引脚不再显示。

最佳答案

我用这个方法:

- (void)setRegionFromCoordinates:(NSArray *)waypoints animated:(BOOL)animated {
if (waypoints != nil) {
CLLocationDegrees maxX = -DBL_MAX;
CLLocationDegrees maxY = -DBL_MAX;
CLLocationDegrees minX = DBL_MAX;
CLLocationDegrees minY = DBL_MAX;

for (NSUInteger i=0; i < waypoints.count; i++) {
CLLocationCoordinate2D currentLocation = [waypoints objectAtIndex:i];

MKMapPoint mapPoint = MKMapPointForCoordinate(currentLocation);

if (mapPoint.x > maxX) {
maxX = mapPoint.x;
}
if (mapPoint.x < minX) {
minX = mapPoint.x;
}
if (mapPoint.y > maxY) {
maxY = mapPoint.y;
}
if (mapPoint.y < minY) {
minY = mapPoint.y;
}

}

if (maxX != -DBL_MAX && minX != DBL_MAX) {
MKMapRect mapRect = MKMapRectMake(minX,minY,maxX-minX,maxY-minY);
[map setVisibleMapRect:mapRect edgePadding:UIEdgeInsetsMake(50.f, 50.f, 50.f, 50.f) animated:animated];
}
}
}

关于iphone - 如何以用户位置为中心设置 map 矩形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14648494/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com