2012-09-16 55 views
0

試圖找出在按下按鈕以轉到mapView中的某個經度和緯度時是否可以放下按鈕。我複製了以前工作的「newAnnotation」引腳的代碼,但現在意識到它可能不在我的按鈕代碼中。這裏是我的按鈕代碼:在按下按鈕時在地圖上顯示註釋Pin

-(IBAction)buttonPressed 
{ 
CLLocationCoordinate2D location; 
MKCoordinateSpan span; 
location.latitude = (double) 44.4758; 
    location.longitude = (double) -73.2125; 
span.latitudeDelta=0.2; 
span.longitudeDelta=0.2; 


    MapViewAnnotation *newAnnotation = [[MapViewAnnotation alloc] initWithTitle:@"BCA" 
    andCoordinate:location]; 
[self.mapView addAnnotation:newAnnotation]; 
[newAnnotation release]; 


themapView = [[MapView alloc] initWithNibName:@"MapView" bundle:nil]; 
[self.view addSubview:themapView.view]; 
} 

我知道按鈕的作品和它實際上去的MapView和正在處理的座標,但它只是不會放棄與標題的引腳。目前,我的代碼不存在任何錯誤。如果您需要查看其他代碼,請告訴我。太感謝了。

+0

我知道按鈕WORKS,它實際上是去mapView和正在處理的座標,但它只是沒有放下與標題的引腳。目前,我的代碼不存在任何錯誤。如果您需要查看其他代碼,請告訴我。太感謝了。 – Greg

回答

1

我認爲你的問題是你要添加一個註釋到一個不可見的地圖視圖。你必須第一個添加地圖視圖視圖作爲子視圖然後添加註釋。下面是代碼會是什麼樣子:

-(IBAction)buttonPressed 
{ 
CLLocationCoordinate2D location; 
MKCoordinateSpan span; 
location.latitude = (double) 44.4758; 
    location.longitude = (double) -73.2125; 
span.latitudeDelta=0.2; 
span.longitudeDelta=0.2; 

MapViewAnnotation *newAnnotation = [[MapViewAnnotation alloc] initWithTitle:@"BCA" 
andCoordinate:location]; 
[self.mapView addAnnotation:newAnnotation]; 
[newAnnotation release]; 


themapView = [[MapView alloc] initWithNibName:@"MapView" bundle:nil]; 
[self.view addSubview:themapView.view]; 

} 

UPDATE:

我們可以看到MapViewAnnotation代碼。它應該是一個NSObject類採用MKAnnotation這樣<MKAnnotation>,你應該申報和綜合三個屬性:標題,副標題,如果你喜歡,當然協調

另一個問題可能是您要添加MapView的觀點作爲子視圖。這可能是更好地把這些代碼MapView和現在MapView作爲一個視圖控制器

我也想不明白,爲什麼要添加註釋self.mapView,然後在其上添加一個子視圖.....

+0

謝謝!剛剛嘗試過,但沒有雪茄。這是最古怪的事情! – Greg

+0

你在你的最後一部分。我無意中將MapView的視圖添加爲子視圖,並且存在衝突。這是這裏頭號問題。現在我知道我可以嘗試解決它。我的問題是:是否甚至可以按下按鈕,然後轉到地圖視圖並在通過該按鈕的座標上放置一個針腳?當然,任何人都可以將座標插入到mapView本身的viewDidLoad中,並讓它發生,但我正在討論每個按鈕都有自己的座標並將其傳遞給mapView。我沒有看到這個例子。 – Greg

+0

如果答案有幫助,您可以upvote並打勾。你只需要在連接不同的行動和在這些不同的IBAction爲方法就是你把代碼放棄與特定座標銷.... – MCKapur

0

您正在將您的註釋添加到self.mapview中,然後製作單獨的地圖並將其視圖添加爲子視圖,這很奇怪。

如果你的self.mapview已經在屏幕上,那麼你可以刪除你的函數的最後兩行。如果沒有,那麼你的函數可能需要改變,更喜歡這個

-(IBAction)buttonPressed 
{ 
    CLLocationCoordinate2D location; 
    MKCoordinateSpan span; 
    location.latitude = (double) 44.4758; 
    location.longitude = (double) -73.2125; 
    span.latitudeDelta=0.2; 
    span.longitudeDelta=0.2; 


    themapView = [[MapView alloc] initWithNibName:@"MapView" bundle:nil]; 
    [self.view addSubview:themapView]; 

    MapViewAnnotation *newAnnotation = [[MapViewAnnotation alloc] initWithTitle:@"BCA" 
andCoordinate:location]; 
    [themapView addAnnotation:newAnnotation]; 
    [newAnnotation release]; 

}

重要的變化是,你要添加的註釋themapView你剛初始化,並且你」重新添加mapView(不是它的.view)到當前的.view。您可能還需要重新映射您的地圖。