2013-05-16 2 views
0

Я использую код HGMovingAnnotation и HGMovingAnnotationView с кодом github для анимирования MKAnnotation на MKmap. Когда я запускаю пример проекта из проекта HG, все работает отлично.MKAnnotation не обновляет позицию

Я внедрил оригинальный проект HG, чтобы позволить мне вручную нажимать новую координату на HGMapPath, а затем переместить аннотацию там, где я ее хочу.

Я поместил кнопку для тестирования, чтобы запустить ручной процесс, и все работает нормально. Аннотации перемещаются по экрану. Проблема заключается в том, что, когда я пытаюсь теперь вызывать этот ручной метод с данными из живого соединения socket.io, аннотация карты не будет перемещаться.

Кроме того, когда карта сначала загружает аннотацию, она не будет отображаться до тех пор, пока я не переместлю карту немного. То же самое для движущейся аннотации вручную, она не покажет движение из потока данных, пока я не увеличу карту. Но если я делаю кнопку кнопки, избегая потока io, аннотация перемещается без необходимости масштабирования или панорамирования карты?

размещающих Посмотреть аннотациями

if(doubleLat && doubleLng) { 

      CLLocationCoordinate2D coordinate = CLLocationCoordinate2DMake(doubleLat, doubleLng); 

      //Create path object 
      self.assignedAmbPath = [[HGMapPath alloc] initWithCoordinate:coordinate]; 

      HGMovingAnnotation *movingObject = [[HGMovingAnnotation alloc] initWithMapPath:self.assignedAmbPath]; 

      self.movingAssignedAmbObject = movingObject; 


      // add the annotation to the map 
      [self.mapView addAnnotation:movingObject]; 


      // zoom the map around the moving object 
      MKCoordinateSpan span = MKCoordinateSpanMake(0.01, 0.01); 
      MKCoordinateRegion region = MKCoordinateRegionMake(MKCoordinateForMapPoint(self.movingAssignedAmbObject.currentLocation), span); 
      [self.mapView setRegion:region animated:YES]; 

      // start moving the object 
      [movingObject start]; 

     } 

код, который работает

- (IBAction)testMoveBtnPressed:(id)sender { 
//TODO: move x and y 
DLog(@"============== Test move button was pressed ================ "); 
NSLog(@""); 

int randn = (random() % 15)+15; 
float pscale = (float)randn/10000; 

double lat = 39.9813855 + pscale; 
double lng = -75.1502155 + pscale; 

for (id<MKAnnotation> annotation in self.mapView.annotations){ 
    MKAnnotationView* anView = [self.mapView viewForAnnotation: annotation]; 
    if (![annotation isKindOfClass:[PhoneAnnotation class]]){ 
     // Process annotation view 
     [((HGMovingAnnotation *)annotation) trackToNewPosition:CLLocationCoordinate2DMake(lat, lng)]; 
    } 
    } 
} 

код, который не работает

{ 

        //TODO: move thing to new location 
        double doubleLat = [lat doubleValue]; 
        double doubleLng = [lng doubleValue]; 
//      NSLog(@"--------------- Jason it is ------------- Latitude being passed in is %f", doubleLat); 
//      NSLog(@"--------------- Jason it is ------------- Longitude being passed in is %f", doubleLng); 
//       
//      [self.movingAssignedAmbObject trackToNewPosition:CLLocationCoordinate2DMake(doubleLat, doubleLng)]; 




        for (id<MKAnnotation> annotation in self.mapView.annotations){ 
         MKAnnotationView* anView = [self.mapView viewForAnnotation: annotation]; 
         if (![annotation isKindOfClass:[PhoneAnnotation class]]){ 
          // Process annotation view 
          [((HGMovingAnnotation *)annotation) trackToNewPosition:CLLocationCoordinate2DMake(doubleLat, doubleLng)]; 

         } 
        } 


       } 
+1

Можете ли вы разместить свой код? Мы не сможем помочь вам в противном случае. – jszumski

ответ

0

Вопрос в библиотеку HG, хотя работ, как описано Безразлично» t работать правильно, если только вы не используете этот путь, если вы не создаете аннотацию с прикрепленной координатой, которую она не делает.