以编程方式设置用户位置的协调Xcode / Objective-C

时间:2012-09-17 09:25:18

标签: iphone objective-c ios xcode mapkit

我正在实现一个iOS应用程序,我想以编程方式设置用户位置。我试过mapView。

        mapView.userLocation.location.coordinate=CLLocationCoordinate2DMake(latFloat, longFloat);

它告诉它被分配给readonly属性。

那么如何以编程方式分配用户位置?旨在在自定义位置显示蓝点。

2 个答案:

答案 0 :(得分:2)

据我所知你不能。该属性用于用户位置,而不是任意点。你应该使用MKAnnotation和它的关联类来做这样的事情。如果你想用类似于用户位置的脉冲圆做一种点,你可能会发现更适合自定义的MKOverlay。请注意,虽然多个MKOverlays 使您的应用程序崩溃,在这种情况下,您希望使用MKOverlayPathView在一个MKOverlayView中绘制许多内容。

**另外,为了在模拟器中进行测试,您可以将任意点列表传递给模拟器,它将作为用户位置提供给应用程序。这仅用于测试各种地图相关代码,但实际上并没有帮助或在“现实世界”中工作**

类似的,假设'annotations'是包含注释的NSMutableArray。

-(MKAnnotationView *)mapView:(MKMapView *)mV 
    viewForAnnotation:(id <MKAnnotation>)annotation {

  MKPinAnnotationView *pinView = nil;
  MKPinAnnotationColor pinColor = MKPinAnnotationColorPurple;
  if([annotations lastObject] == annotation)  
  {
    pinView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"LastLocationIdentifier"];
    pinColor = MKPinAnnotationColorGreen;
  }
  else
  {
    pinView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"PreviousLocationIdentifier"];
  }

  pinView.pinColor = pinColor;

  return pinView;
}

我目前无法对此进行测试,但稍后会这样做。

答案 1 :(得分:1)

使用.gpx文件根据需要设置用户位置。

步骤:

  • 按Commd + N
  • 转到资源
  • 然后选择gpx
  • 输入名称并选择要保存的位置

  • .gpx文件是XML格式的文件。

  • 在lat =“37.331705”lon =“ - 122.030237”中,根据您自己的位置更改此lat和Lon值。
  • 如果您选择了“不模拟我的位置”,请不要忘记点击模拟位置按钮。然后,将其更改为您保存的位置名称..

了解更多详情,请查看------

http://plainoldstan.blogspot.cz/2011/08/on-gpx-files-for-xcode-42.html

(只是忘了添加)同样在你的viewDidLoad方法中,别忘了添加 -

yourMapView.showuserslocation = YES;