установить координаты местоположения пользователя программно Xcode/Objective-C

Я реализую приложение iOS и хочу программно установить местоположение пользователя. я пробовал мапвью.

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

он говорит, что это назначено свойству только для чтения.

так как же программно присвоить местоположение пользователя? чтобы показать синюю точку в произвольном месте.


person fadd    schedule 17.09.2012    source источник


Ответы (2)


Насколько я знаю, вы не можете. Это свойство предназначено для местоположения пользователя, а не для произвольной точки. Вы должны использовать MKAnnotation и связанные с ним классы для такой вещи. Если вы хотите сделать своего рода точку с пульсирующим кругом, похожим на местоположение пользователя, вы можете найти пользовательский MKOverlay более подходящим. Имейте в виду, что несколько MKOverlays приведут к сбою вашего приложения, и в этом случае вы захотите отрисовать множество вещей в одном MKOverlayView, используя MKOverlayPathView.

** Кроме того, для тестирования в симуляторе вы можете передать симулятору произвольный список точек, которые он передаст в приложение в качестве местоположения пользователя. Это предназначено исключительно для тестирования различного кода, связанного с картой, и на самом деле не поможет и не будет работать в «реальном мире» **.

Что-то вроде предположения, что «аннотации» - это 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;
}

В настоящее время я не в состоянии проверить это, но сделаю это позже.

person Diziet    schedule 17.09.2012
comment
спасибо за ваш комментарий... у меня есть карта, и у меня есть массив объектов, который заполнен координатами, широтой и долготой, и я добавляю несколько аннотаций на карту... последняя упавшая булавка - это последнее местонахождение пользователя. Так что я хочу добавить синий круг в последнее место. я попытался изменить цвет последних контактов, которые я не мог. вот мой прошлый поток stackoverflow.com/questions/12369712/multiple- annotation-color/ или что вы предлагаете?? - person fadd; 17.09.2012
comment
работает идеально. большое спасибо, но изменилось только одно, это масштабирование до последнего, а до того, как все аннотации появятся на карте... еще раз спасибо - person fadd; 17.09.2012
comment
Так теперь он отображает только одну аннотацию? Я не совсем понимаю, я думаю. - person Diziet; 17.09.2012
comment
я внес некоторые изменения в метод, который я назвал flyto, и теперь все работает так, как я хочу... большое спасибо, чувак :) - person fadd; 17.09.2012

Используйте файл .gpx, чтобы установить местоположение пользователя по своему усмотрению.

Шаги:

  • Нажмите Коммд + Н
  • Перейти к ресурсу
  • Затем выберите gpx
  • введите имя для него и выберите место для сохранения

  • Файл .gpx представляет собой файл в формате XML.

  • В lat = "37.331705" lon = "-122.030237" измените эти значения широты и долготы в соответствии с вашим собственным местоположением.
  • Не забудьте нажать кнопку имитации местоположения, если вы выбрали «Не имитировать мое местоположение». затем измените его на сохраненное имя местоположения.

для более подробной информации, проверьте это------

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

(просто забудьте добавить) Также в методе viewDidLoad не забудьте добавить-

yourMapView.showuserslocation = YES;

person AKB    schedule 29.01.2013