0
我想用不同的顏色標記我的地圖上的起始別針和結尾別針。也許起始針爲綠色,結束針爲紅色。地圖上的着色別針
我的代碼如下,從核心數據中讀取緯度/經度座標,並針對在覈心數據中找到的每個對象放置一個紅色針腳。
MapPin.h
#import <Foundation/Foundation.h>
#import <MapKit/MapKit.h>
#import <CoreLocation/CoreLocation.h>
@interface MapPin : NSObject <MKAnnotation>{
CLLocationCoordinate2D coordinate;
}
@property (nonatomic, readonly) CLLocationCoordinate2D coordinate;
-(id)initwithCoordinates:(CLLocationCoordinate2D)location;
@end
MapPin.m
#import "MapPin.h"
@implementation MapPin
@synthesize coordinate;
-(id)initwithCoordinates:(CLLocationCoordinate2D)location
{
self = [super init];
if (self != nil) {
coordinate = location;
}
return self;
}
-(void)dealloc{
[super dealloc];
}
@end
MapViewController.m
-(void)addAnnotations
{
if (![sharedMapID isEqualToString:@""]){
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"WayPoint" inManagedObjectContext:managedObjectContext];
[request setEntity:entity];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"waypoint_map_id contains[cd] %@", sharedMapID];
[request setPredicate:predicate];
NSError *error = nil;
NSArray *results = [managedObjectContext executeFetchRequest:request error:&error];
// Check for errors from the FetchRequest
if (nil == results || nil != error)
NSLog(@"Error getting results : %@", error);
listArray = [results mutableCopy];
[request release];
// Loop through the array, get the coordinates and display on the map.
for (int i = 0; i < [listArray count]; i++)
{
NSString *strXCoordinate = [[listArray objectAtIndex: i] valueForKey:@"waypoint_x"];
NSString *strYCoordinate = [[listArray objectAtIndex: i] valueForKey:@"waypoint_y"];
double dblXCoordinate = [strXCoordinate doubleValue];
double dblYCoordinate = [strYCoordinate doubleValue];
CLLocationCoordinate2D coordinate = {dblYCoordinate, dblXCoordinate};
MapPin *pin = [[MapPin alloc]initwithCoordinates:coordinate];
[self.mapView addAnnotation:pin];
[pin release];
}
[listArray release];
}
}
從我讀過的和一些例子,我發現谷歌搜索下面的代碼時,被稱爲地圖上的每個引腳。它沒有在我的地圖上放置任何綠色的針腳。也許我應該將座標傳遞給此方法,並允許它將引腳放置在地圖上,而不是上面的代碼。
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation
{
MKPinAnnotationView *annView = nil;
annView.pinColor = MKPinAnnotationColorGreen;
annView.animatesDrop = TRUE;
annView.canShowCallout = YES;
annView.calloutOffset = CGPointMake(-5, 5);
return annView;
}
任何幫助或推動正確的方向(原諒雙關語)非常讚賞。
問候, 斯蒂芬
弗拉基米爾,謝謝回覆。我只是有點困惑,應該代替@「SomeID」。我正在閱讀dequeueReusableAnnotationViewWithIdentifier的Apple文檔,但仍有點困惑。 – Stephen 2010-09-16 14:22:38
您可以使用任何字符串 - 只要確保您使用與創建的ID相同的視圖出列視圖。您還可以使用不同的ID來創建和出列不同類型的註釋視圖(例如,您可以查看地鐵站和公交站點 - 您可以使用不同的ID創建和出列它們,然後爲其設置適當的註釋) – Vladimir 2010-09-16 14:26:30