是否可以將指示用戶在MKMapView
中的位置的blue dot更改爲圖像?例如一輛小車或任何.png
圖像?如何將MKMapView的用戶位置藍點更改爲選擇的圖像?
32
A
回答
55
在viewForAnnotation:MKMapViewDelegate的方法也許你會爲這樣的代碼。
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation {
if (annotation == mapView.userLocation) return nil;
...
回到零如果註釋是用戶位置讓的MapView顯示藍點&圈動畫。爲了顯示我們的用戶位置的自定義註釋,只需刪除行return nil;
並在那裏進行自定義。
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation {
static NSString* AnnotationIdentifier = @"Annotation";
MKPinAnnotationView *pinView = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:AnnotationIdentifier];
if (!pinView) {
MKPinAnnotationView *customPinView = [[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:AnnotationIdentifier] autorelease];
if (annotation == mapView.userLocation){
customPinView.image = [UIImage imageNamed:@"myCarImage.png"];
}
else{
customPinView.image = [UIImage imageNamed:@"mySomeOtherImage.png"];
}
customPinView.animatesDrop = NO;
customPinView.canShowCallout = YES;
return customPinView;
} else {
pinView.annotation = annotation;
}
return pinView;
}
1
好,這裏是斯威夫特版本:
func mapView(mapView: MKMapView!, viewForAnnotation annotation: MKAnnotation!) -> MKAnnotationView! {
let identifier = "User"
var annotationView = mapView.dequeueReusableAnnotationViewWithIdentifier(identifier)
if annotationView == nil{
annotationView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: identifier)
annotationView.canShowCallout = true
} else {
annotationView.annotation = annotation
}
annotationView.image = UIImage(named: "image")
return annotationView
}
4
這裏是雨燕2.0的版本中,你可能有多個引腳。
在這段代碼中,CustomAnnotation只是一個MKAnnotation子類。基本上,如果註釋不是您的自定義類中的一種,那麼它的用戶位置引腳。
func mapView(mapView: MKMapView, viewForAnnotation annotation: MKAnnotation) -> MKAnnotationView?
{
// This is false if its a user pin
if(annotation.isKindOfClass(CustomAnnotation) == false)
{
let userPin = "userLocation"
if let dequeuedView = _view.mapView().dequeueReusableAnnotationViewWithIdentifier(userPin)
{
return dequeuedView
} else
{
let mkAnnotationView:MKAnnotationView = MKAnnotationView(annotation: annotation, reuseIdentifier: userPin)
mkAnnotationView.image = UIImage(named: C_GPS.ROUTE_WALK_ICON_NAME)
let offset:CGPoint = CGPoint(x: 0, y: -mkAnnotationView.image!.size.height/2)
mkAnnotationView.centerOffset = offset
return mkAnnotationView
}
}
let annotation = annotation as? CustomAnnotation
if(annotation == nil)
{
return nil
}
let endPointsIdentifier = "endPoint"
if let dequeuedView = _view.mapView().dequeueReusableAnnotationViewWithIdentifier(endPointsIdentifier)
{
dequeuedView.image = annotation!.uiimage
return dequeuedView
} else
{
let mkAnnotationView:MKAnnotationView = MKAnnotationView(annotation: annotation, reuseIdentifier: endPointsIdentifier)
mkAnnotationView.image = annotation!.uiimage
let offset:CGPoint = CGPoint(x: 0, y: -mkAnnotationView.image!.size.height/2)
mkAnnotationView.centerOffset = offset
let gesture = UITapGestureRecognizer(target: self, action: "routeTouched:")
mkAnnotationView.addGestureRecognizer(gesture)
return mkAnnotationView
}
}
0
是這個改變當前位置的藍點???
func mapView(mapView: MKMapView!, viewForAnnotation annotation: MKAnnotation!) ->
MKAnnotationView! {
let identifier = "User"
var annotationView = mapView.dequeueReusableAnnotationViewWithIdentifier(identifier)
if annotationView == nil{
annotationView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: identifier)
annotationView.canShowCallout = true
} else {
annotationView.annotation = annotation
}
annotationView.image = UIImage(named: "image")
return annotationView
}
-1
請嘗試這樣的事情。它在Xcode 7和Swift 2中爲我工作。
func mapView(mapView: MKMapView, viewForAnnotation annotation: MKAnnotation) -> MKAnnotationView? {
// want to show a custom image if the annotation is the user's location.
guard !annotation.isKindOfClass(MKUserLocation) else {
let annotationView = MKAnnotationView(annotation: annotation, reuseIdentifier: "userLocation")
annotationView.image = UIImage(named: "icon_coordinates_self")
return annotationView
//return nil
}
// for other annotation except current location
let annotationIdentifier = "AnnotationIdentifier"
var annotationView: MKAnnotationView?
if let dequeuedAnnotationView = mapView.dequeueReusableAnnotationViewWithIdentifier(annotationIdentifier) {
annotationView = dequeuedAnnotationView
annotationView?.annotation = annotation
}
else {
let av = MKAnnotationView(annotation: annotation, reuseIdentifier: annotationIdentifier)
av.rightCalloutAccessoryView = UIButton(type: .DetailDisclosure)
annotationView = av
}
if let annotationView = annotationView {
// Configure your annotation view here
annotationView.canShowCallout = true
annotationView.image = UIImage(named: "Annotation_map")
}
return annotationView
}
相關問題
- 1. 如何將MKMapView的用戶位置藍點替換爲圖像?
- 2. 如何將Googlemap用戶位置藍點更改爲iOS中選擇的圖像?
- 3. MKMapView如何更改用戶最近位置的PIN圖像?
- 4. 爲MKMapview停止用戶位置更新(藍點)
- 5. 在列中更改用戶選擇中圖像的位置
- 6. 如何更改mkmapview中的用戶位置引腳圖像type = satellite?
- 7. 更改MKMapView用戶位置註釋
- 8. 如何將表單的背景圖像設置爲用戶選擇的圖像?
- 9. 在iPhone中顯示用戶位置藍點MKMapView
- 10. Gridview將選擇行更改爲圖像?
- 11. 如何在選擇時將UITableViewCell的顏色更改爲藍色
- 12. 圖標更改UITableViewCell的選擇位置
- 13. 如何更改UITableViewCell的藍色選擇?
- 14. 在MKMapView中更改當前位置的圖像
- 15. 如何更改圖像的位置?
- 16. 的MKMapView用戶位置差
- 17. 如何將Radwindow加載圖像的顏色更改爲藍色
- 18. 如何將3d點更改爲2d像素位置?
- 19. MKUserLocation的自定義標註,顯示用戶在MKMapView中的位置的藍點
- 20. 在MKMapView中跟蹤用戶位置註釋的選擇
- 21. 你如何以用戶更改位置爲中心的地圖
- 22. Android編程,mapview位置覆蓋:如何更改默認的藍色位置點,與另一個圖像
- 23. 如何將DropBox選擇器按鈕更改爲圖像?
- 24. 如何在所需位置顯示mapkit藍點(用戶位置)?
- 25. iOS6的 - 的MKMapView當前位置的藍色圓點
- 26. 如何在用戶選擇時更改單元格圖像?
- 27. 圖像位置 - 隨機選擇位置
- 28. 如何在點擊時將圖像更改爲其他圖像?
- 29. MKMapView註釋圖像更改爲針點擊
- 30. 選擇選項更改時如何更改圖像?
完美的作品:)謝謝! – LouwHopley 2011-06-09 15:24:36
只是在旁註 - 是否有一種簡單的方法來維護自定義圖像下方的淺藍色「準確性」圓圈? – LouwHopley 2011-06-09 15:31:42
@Nideo,我猜你必須用* userLocation *註解的*座標來創建一個註釋。在* didUpdateToLocation:*方法中,您還需要更新新的註釋。但我不知道這是否會按照您的預期工作。在* if(註解== mapView.userLocation)*的情況下,這可能會失敗,因爲您的新註釋也包含用戶位置的座標。但我不確定。試一試! – EmptyStack 2011-06-10 04:28:24