2016-11-28 4 views
0

MapBox Android SDK v4.1.1.1 через Xamarin Component (https://components.xamarin.com/view/mapboxsdk/)MapBox Пользовательского маркер анкерные и зуммирование вопросы

Я использую пример тестовый стенд, поставляемый с компонентом Xamarin выше и пытаюсь установить растяжимый в качестве Значок маркера с помощью класса Маркерный маркер. Во время выполнения привязка маркера, по-видимому, устанавливается по умолчанию/слева по умолчанию, что приводит к тому, что маркер перемещается по карте South West во время любого масштабирования и на северо-востоке при масштабировании. Если я удалю настройку значка, тогда используется значок по умолчанию, и он правильно позиционируется во время любых жестов масштабирования и вращения.

Может ли кто-нибудь дать представление о таком поведении и о том, как противостоять ему?

код

Пример:

     protected override async void OnCreate (Bundle bundle) 
         { 
          base.OnCreate (bundle); 

          SetContentView (Resource.Layout.Main); 

          mapView = FindViewById<MapView> (Resource.Id.mapview); 
          mapView.AccessToken = GetString (Resource.String.mapboxAccessToken); 
          mapView.StyleUrl = Mapbox.Constants.Style.MapboxStreets; 
          mapView.OnCreate (bundle); 

          // Get the map instance 
          map = await mapView.GetMapAsync(); 
          map.UiSettings.ZoomControlsEnabled = true; 

          //Removed code for click events 

          map.AddMarker (new MarkerOptions() 
              .SetTitle ("Test Marker") 
              .SetPosition (new LatLng (41.885, -87.679))        
     //This is the only change made from the provided sample code - for setting the icon    
      .SetIcon(IconFactory.GetInstance(this).FromResource(Resource.Drawable.Driver_Pin) 
     //This is the only change made from the provided sample code - for setting the icon 
              ); 
          var position = new CameraPosition.Builder() 
              .Target (new LatLng (41.885, -87.679)) // Sets the new camera position 
              .Zoom (11) // Sets the zoom 
              .Build(); // Creates a CameraPosition from the builder 
         map.AnimateCamera (CameraUpdateFactory.NewCameraPosition (position), 3000); 
        } 

Я переключил использовать класс MapBox MarkerView, который дает доступ к методу SetAnchor(), однако это не оказывает какого-либо влияния на вопрос, независимо от того, что значения я использую ,

   map.AddMarker (new MarkerViewOptions() 
          .SetTitle ("Test Marker") 
          .SetPosition (new LatLng (41.885, -87.679)) 
          .SetAnchor(0.5f, 1.0f) // this should be bottom center 
          .SetIcon(IconFactory.GetInstance(this).FromResource(Resource.Drawable.Driver_Pin)) 
         ); 

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

Кроме того, если я включаю встроенные кнопки масштабирования (через UISettings), то увеличение и уменьшение масштаба также, по-видимому, имеет смещение по верхнему/левому краю, что означает, что вместо того, чтобы приближаться к центральной точке видимой карты, zoom, похоже, сосредоточен на точке юго-запада от нее.

Это сообщение Drawable icons on route not pinned at base похоже связано с проблемой, которую я вижу, и окончательный комментарий от OP указывает, что проблема с пользовательскими значками маркеров и привязкой по-прежнему сохраняется, хотя ссылка делается на постановку проблем, v4.1.1.

ответ

0

Спасибо за подробную запись, в то время как Mapbox напрямую не поддерживает компонент Xamarin, я смог воспроизвести проблему в этом вопросе SO. Вы можете попробовать обновить до 4.2.0-beta.5, если у Xamarin это есть. У MarkerOptions не должно быть никаких проблем с привязкой, но вы должны : нужно добавить прописью внизу значка (привязка центрирована).

+1

Большое спасибо за ответ @cammace, который соответствует моим выводам, и мне действительно нужно было воссоздать мои атрибуты маркера с соответствующим заполнением (в соответствии с маркером по умолчанию, используемым в коде карты), и это решило проблему перемещения маркеров по масштабированию. Как только Xamarin выпускает обновленный компонент с помощью v4.2.x, я обновляюсь, поскольку вижу, что он имеет лучшую производительность в целом. – gazp