我有几百个位置的列表,只想为当前屏幕上的那些位置显示MKPinAnnotation.屏幕以用户当前位置开始,半径为2英里.当然,用户可以在屏幕上滚动和缩放.现在,我等待地图更新事件,然后遍历我的位置列表,并检查这样的坐标:
-(void)mapViewDidFinishLoadingMap:(MKMapView *)mapView {
CGPoint point;
CLLocationCoordinate2D coordinate;
. . .
/* in location loop */
coordinate.latitude = [nextLocation getLatitude];
coordinate.longitude = [nextLocation getLongitude];
/* Determine if point is in view. Is there a better way then this? */
point = [mapView convertCoordinate:coordinate toPointToView:nil];
if( (point.x > 0) && (point.y>0) ) {
/* Add coordinate to array that is later added to mapView */
}
Run Code Online (Sandbox Code Playgroud)
所以我问convertCoordinate哪个点在屏幕上(除非我误解了这个方法很可能).如果坐标不在屏幕上,那么我从不将它添加到mapView.
所以我的问题是,这是确定位置的纬度/经度是否会出现在当前视图中并且应该添加到mapView的正确方法吗?或者我应该以不同的方式做这件事吗?
我有一些关于CoreLocation和GPS的问题.
首先,核心位置使用什么方法来持续获取用户当前坐标?在什么时间间隔应该检索这些?
第二,每次接收这些坐标时是否应将这些坐标推入NSMutableArray,以便坐标数组代表用户路径?
谢谢,只是想开始让我介意这一点.
我想每5秒在mapview上更新一些注释的图像,但是我不想删除它们并将它们重新添加到地图中,因为这会导致它们"闪烁"或刷新,(即消失然后重新出现) .我希望它是无缝的.
我尝试过以下方法:
//get the current icon
UserAnnotation *annotation = [self GetUserIconWithDeviceId:deviceId];
//make a new annotation for it
UserAnnotation *newAnnotation = [[UserAnnotation alloc]
initWithCoordinate: userCoordinates
addressDictionary:nil];
newAnnotation.title = name;
newAnnotation.userDeviceId = deviceId;
NSInteger ageIndicator = [[userLocation objectForKey: @"ageIndicator"] integerValue];
newAnnotation.customImage = [UserIconHelpers imageWithAgeBorder:ageIndicator FromImage: userImage];
//if its not there, add it
if (annotation != nil){
//move it
//update location
annotation.coordinate = userCoordinates;
//add new one
[self.mapView addAnnotation: newAnnotation];
//delete old one
[self.mapView removeAnnotation: annotation];
} else {
//just addd the …Run Code Online (Sandbox Code Playgroud) 我有两个MapKit注释,显示纬度和经度.
有什么方法可以通过现有的Objective-C iOS API函数来计算两者之间的距离吗?
我有一个带有多个注释的MapView.但是我需要根据JSON值将不同的图像放到注释中.

这就是我想要做的......需要根据JSON值为引脚添加不同的图像.
是否有人知道如何做到这一点?请帮助,这将非常有帮助.
谢谢
我正试图在MapKit视图上隐藏一个引脚,并在设置hidden属性YES工作时,我仍然可以点击它并获取didSelectAnnotationView消息!当然,我尝试设置userInteractionEnabled到NO,但我仍然收到的消息.
这就是我尝试过的.a是我的注释视图.
a.hidden = YES;
a.layer.hidden = YES;
a.userInteractionEnabled = NO;
Run Code Online (Sandbox Code Playgroud)
这里有一些我不知道的东西,我在各处搜索过,找不到任何可行的东西.有线索吗?
我想在地图上设置自定义图像而不是普通图钉.我也希望它能够被打开并为每一个添加下降动画.
有什么建议吗?
编辑:这就是我的全部
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(ActivityAnnotation *)annotation
{
static NSString* AnnotationIdentifier = @"AnnotationIdentifier";
MKPinAnnotationView* pinView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:AnnotationIdentifier];
pinView.animatesDrop=YES;
pinView.canShowCallout=YES;
UIImage *image = [UIImage imageNamed:@"Map_Pin"];
pinView.image = image;
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
imageView.frame = CGRectMake(-2.5,6,27,30);
[pinView addSubview:imageView];
UIButton* rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
rightButton.tag = [activities indexOfObject:annotation.activity];
[rightButton addTarget:self action:@selector(showDetails:) forControlEvents:UIControlEventTouchUpInside];
pinView.rightCalloutAccessoryView = rightButton;
return pinView;
}
Run Code Online (Sandbox Code Playgroud)
一切正常,但原始图钉不断显示在我的默认图像后面.我怎么擦除它?
我想在iPhone/iPad应用程序中将叠加的开始和结束图像放入.我有开始和结束纬度和经度值,并希望在起点和终点之间绘制叠加,并将起始图像放在起点和结束点上的结束图像上.
我用谷歌搜索但是我发现MapKit得到一个图像并在开始和结束点设置它,找不到第二个图像的任何帮助.
喜欢
annotationView.image=[UIImage imageNamed:@"parkingIcon.png"];
Run Code Online (Sandbox Code Playgroud)
它只为起点和终点设置了一个图像.但是我想为这两点添加不同的图像.
请帮忙.
我有以下代码:
- (MKAnnotationView *) mapView:(MKMapView *) mapView viewForAnnotation:(id ) annotation {
MKPinAnnotationView *customAnnotationView=[[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:nil] autorelease];
customAnnotationView.pinColor = MKPinAnnotationColorRed;
customAnnotationView.animatesDrop = NO;
customAnnotationView.canShowCallout = YES;
UIButton *rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
[rightButton addTarget:self action:@selector(annotationViewClick:) forControlEvents:UIControlEventTouchUpInside];
customAnnotationView.rightCalloutAccessoryView = rightButton;
return customAnnotationView;
}
Run Code Online (Sandbox Code Playgroud)
此方法更改地图视图上的每个注释,包括当前位置的蓝色圆圈注释。我只想更改自定义注释,而仅保留当前位置注释。
我怎样才能做到这一点?
-(void)mapView:(MKMapView *)mapView
annotationView:(MKAnnotationView *)view
didChangeDragState:(MKAnnotationViewDragState)newState
fromOldState:(MKAnnotationViewDragState)oldState
Run Code Online (Sandbox Code Playgroud) mapkit ×10
ios ×6
iphone ×6
objective-c ×5
mkmapview ×4
mkannotation ×3
cocoa-touch ×2
annotations ×1
ipad ×1