2011-11-16 48 views
0

我有一個應用程序,在這裏我給用戶2選項。 1.通過GPS選擇您的當前位置 2.手動輸入您當前的位置。在iPhone中需要時在地圖上定製圖標和默認當前位置圖標

我想要的是當用戶選擇第一個選項,然後我必須顯示當前位置的藍色動畫圖標 當用戶選擇了第二個選項時,我必須顯示我自己的自定義圖標的當前位置。

可能嗎?建議是最受歡迎的。

謝謝。

回答

1

首先設置一個布爾變量爲例isInGPSMode

現在應用下面的代碼

if(isInGPSMode==TRUE) 
{ 
    mapViewHome.showsUserLocation=TRUE; 
} 
else 
{ 
    mapViewHome.showsUserLocation=FALSE; 
} 

和處理地圖視圖委託作爲

- (MKAnnotationView *) mapView:(MKMapView *)mapView1 viewForAnnotation:(id <MKAnnotation>) annotation 
{ 
    if(annotation==mapViewHome.userLocation) 
    { 
     return nil; 
    } 
    addAnnonation *tempAnnonation=(addAnnonation *)annotation; 

    MKPinAnnotationView *annView=[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"currentloc"]; 
    annView.pinColor = MKPinAnnotationColorRed; 
    return annView; 

} 

進一步的細節請參考該鏈接 http://developer.apple.com/iphone/library/samplecode/MapCallouts/Introduction/Intro.html

希望這有助於

+0

如果我縮小我的地圖..默認當前位置圖標消失。如果我再次點擊從GPS獲取座標的按鈕並將地圖放大到該特定位置,則在大約3-4分鐘後出現默認當前位置圖標。任何想法是什麼問題?或者它是默認行爲.. –

0

Rupesh在斯威夫特的解決方案:

func mapView(mapView: MKMapView, viewForAnnotation annotation: MKAnnotation) -> MKAnnotationView? { 
    // Keep default pin for user location 
    if myMapView.userLocation.isEqual(annotation) { 
     return nil; 
    } 

    var pinView = mapView.dequeueReusableAnnotationViewWithIdentifier("pin") as? MKPinAnnotationView 
    if pinView == nil { 
     pinView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: "pin") 
     pinView!.canShowCallout = true 
     pinView!.animatesDrop = true 
     pinView!.pinColor = .Red 
    } 
    else { 
     pinView!.annotation = annotation 
    } 
    return pinView 
} 
相關問題