3

I use mapBox and after update to version 7.1.1 some function are deprecated but there is nothing to replace.

In this line addMarker and IconFactory and MarkerOptions are deprecated

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

And also clear() function is deprecated

mapboxMap.clear()

I added this

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

But there is nothing similar / helpful to clear map or add marker in doc / example

Radesh
  • 13,084
  • 4
  • 51
  • 64
  • 2
    There is a deleteAll method on the different managers added as part of https://github.com/mapbox/mapbox-plugins-android/pull/859 which will be released as part of 0.6.0. For now you need to getAnnotations from the manager and call manager.delete on them. – Tobrun Mar 19 '19 at 12:37
  • @Tobrun thanks for reply. but for now what can i do? – Radesh Mar 19 '19 at 12:45

3 Answers3

1

For adding marker using new methods, modify your gradle with

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'
}

Using Markers

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()
}

For clearing the map you can use the delete function in SymbolManager

As per this thread thread

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);

This will be available from annotation-0.6.0

Manoj Perumarath
  • 9,337
  • 8
  • 56
  • 77
1

In v10 , we can remove annotation (marker) using manager

pointAnnotationManager?.deleteAll()
shubomb
  • 672
  • 7
  • 20
0

It will be released in annotation plugin 0.6.0. For now you can use this to clear all symbols or circles:

// 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)
}
android_dev
  • 3,886
  • 1
  • 33
  • 52