mapboxMap.clear () устарела - PullRequest
       10

mapboxMap.clear () устарела

3 голосов
/ 19 марта 2019

Я использую mapBox и после обновления до версии 7.1.1 некоторые функции устарели, но заменить их нечем.

В этой строке addMarker и IconFactory и MarkerOptions устарели

mapboxMap.addMarker(MarkerOptions()
                .position(LatLng(lat, lng))
                .icon(IconFactory.getInstance(context)
                .fromResource(R.drawable.ic_marker)))

А также функция clear () устарела

mapboxMap.clear()

Я добавил это

implementation 'com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v7:0.5.0'

Но нет ничего подобного / полезного для очистки карты или добавления маркера в документ/ пример

Ответы [ 2 ]

1 голос
/ 19 марта 2019

Для добавления маркера с использованием новых методов, измените ваш Gradle с помощью

andorid{
compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
} 

dependencies {
implementation 'com.mapbox.mapboxsdk:mapbox-android-sdk:7.2.0'
implementation 'com.mapbox.mapboxsdk:mapbox-android-plugin-markerview-v7:0.2.0'
implementation 'com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v7:0.5.0'
}

Используя маркеры

class MarkerActivity : AppCompatActivity()  {

private val random = Random()
private var markerViewManager: MarkerViewManager? = null
private var marker: MarkerView? = null
private lateinit var mapBox: MapboxMap

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    Mapbox.getInstance(
        this,
        "Your key"
    )

    setContentView(R.layout.activity_main)
    mapView.onCreate(savedInstanceState)
    mapView.getMapAsync { mapboxMap ->
        mapboxMap.setStyle(Style.MAPBOX_STREETS) { _ ->
            this.mapBox = mapboxMap
            mapboxMap.moveCamera(CameraUpdateFactory.zoomTo(2.0))

            markerViewManager = MarkerViewManager(mapView, mapboxMap)
            createRandomMarkers()
         }
      }
    }

    private fun createRandomMarkers() {
    markerViewManager?.let {
        for (i in 0..5) {
            val imageView = ImageView(this@MarkerActivity)
            imageView.setImageResource(R.mipmap.ic_launcher)
            imageView.layoutParams = FrameLayout.LayoutParams(50, 50)
            val markerView = MarkerView(createRandomLatLng(), imageView)
            it.addMarker(markerView)
        }
    }
}

 private fun createRandomLatLng(): LatLng {
    return LatLng(
        random.nextDouble() * -200.0 + 90.0,
        random.nextDouble() * -300.0 + 180.0
    )
}

override fun onStart() {
    super.onStart()
    mapView.onStart()
}

override fun onPause() {
    super.onPause()
    mapView.onPause()
}

override fun onStop() {
    super.onStop()
    mapView.onStop()
}

override fun onLowMemory() {
    super.onLowMemory()
    mapView.onLowMemory()
}

override fun onDestroy() {
    super.onDestroy()
    markerViewManager?.onDestroy()
    mapView.onDestroy()
}

Для очистки карты вы можете использовать функцию удаления в SymbolManager

Согласно этой теме Тема

List<Symbol> symbols = new ArrayList<>();
LongSparseArray<Symbol> symbolArray = symbolManager.getAnnotations();
for (int i = 0; i < symbolArray.size(); i++) {
symbols.add(symbolArray.valueAt(i));
}
symbolManager.delete(symbols);

Это будет доступно с annotation-0.6.0

0 голосов
/ 22 марта 2019

Будет выпущен плагин аннотации 0.6.0. Пока вы можете использовать это, чтобы очистить все символы или круги:

// FIXME Temp function https://github.com/mapbox/mapbox-plugins-android/pull/859/commits/74b9ffa286e63b9c02ed7d2bdefa1ba48bd997a3
private fun deleteAllSymbols() {
    val symbols = mutableListOf<Symbol>()
    val symbolArray = symbolManager.annotations
    for (i in 0 until symbolArray.size()) {
        symbols.add(symbolArray.valueAt(i))
    }
    symbolManager.delete(symbols)
}

// FIXME Temp function https://github.com/mapbox/mapbox-plugins-android/pull/859/commits/74b9ffa286e63b9c02ed7d2bdefa1ba48bd997a3
private fun deleteAllCircles() {
    val circles = mutableListOf<Circle>()
    val circleArray = circleManager.annotations
    for (i in 0 until circleArray.size()) {
        circles.add(circleArray.valueAt(i))
    }
    circleManager.delete(circles)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...