2015-10-08 75 views
1

我要修復的標記在地圖的中心而不管位置座標。如果用戶在地圖上移動相機,我希望它在中間不會出現任何閃爍的標記,並且該標記上的新位置會顯示,如果可以,那麼我該怎麼做?請幫忙。由於固定標記SDK

我使用iOS版谷歌地圖SDK(Objective-C的)

回答

4
GMSCameraPosition *lastCameraPosition; 

- (void)mapView:(GMSMapView *)pMapView didChangeCameraPosition:(GMSCameraPosition *)position { 

     /* move draggable pin */ 
     if (movingMarker) { 

      // stick it on map and start dragging from there.. 
      if (lastCameraPosition == nil) lastCameraPosition = position; 

      // Algebra :) substract coordinates with the difference of camera changes 
      double lat = position.target.latitude - lastCameraPosition.target.latitude; 
      double lng = position.target.longitude - lastCameraPosition.target.longitude; 
      lastCameraPosition = position; 
      CLLocationCoordinate2D newCoords = CLLocationCoordinate2DMake(movingMarker.googleMarker.position.latitude+lat, 
                      movingMarker.googleMarker.position.longitude+lng); 
      [movingMarker.googleMarker setPosition:newCoords]; 
      return; 
     } 

    } 

    - (void)mapView:(GMSMapView *)mapView idleAtCameraPosition:(GMSCameraPosition *)position { 

     lastCameraPosition = nil; // reset pin moving, no ice skating pins ;) 

    } 

現在上面的代碼,使標記停留,因爲它是,但它飛行的同時拖動屏幕。

,如果你想它爲中心首先你必須設置標記座標map.center - >座標轉換,然後你有一些動畫做:

CGPoint point = map.center; GMSCameraUpdate *camera =[GMSCameraUpdate setTarget:[map.projection coordinateForPoint:point]]; 
[map animateWithCameraUpdate:camera]; 

然後等待地圖:mapDidIdle

+1

什麼是您的代碼中的movingMarker? –

+0

中心的「固定標記」 – Jaro