summaryrefslogtreecommitdiff
path: root/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/fragment/ViewPagerActivity.kt
blob: 77e2e1370d666b0a2a7a8fa0088da07194f68522 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
package com.mapbox.mapboxsdk.testapp.activity.fragment

import android.os.Bundle
import android.support.v4.app.Fragment
import android.support.v4.app.FragmentManager
import android.support.v4.app.FragmentStatePagerAdapter
import android.support.v7.app.AppCompatActivity
import com.mapbox.mapboxsdk.camera.CameraPosition
import com.mapbox.mapboxsdk.geometry.LatLng
import com.mapbox.mapboxsdk.maps.MapboxMapOptions
import com.mapbox.mapboxsdk.maps.Style
import com.mapbox.mapboxsdk.maps.SupportMapFragment
import com.mapbox.mapboxsdk.testapp.R
import kotlinx.android.synthetic.main.activity_viewpager.*

/**
 * Test activity showcasing using the Android SDK ViewPager API to show MapFragments.
 */
class ViewPagerActivity : AppCompatActivity() {

  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_viewpager)
    viewPager.adapter = MapFragmentAdapter(supportFragmentManager)
  }

  override fun onRestoreInstanceState(savedInstanceState: Bundle) {
    super.onRestoreInstanceState(savedInstanceState)

    val currentPosition = viewPager.currentItem
    var mapFragment: SupportMapFragment

    if (Math.abs(0 - currentPosition) <= 1) {
      mapFragment = viewPager.adapter?.instantiateItem(viewPager, 0) as SupportMapFragment
      mapFragment.getMapAsync { mapboxMap -> mapboxMap.setStyle(Style.MAPBOX_STREETS) }
    }

    if (Math.abs(1 - currentPosition) <= 1) {
      mapFragment = viewPager.adapter?.instantiateItem(viewPager, 1) as SupportMapFragment
      mapFragment.getMapAsync { mapboxMap -> mapboxMap.setStyle(Style.DARK) }
    }

    if (Math.abs(2 - currentPosition) <= 1) {
      mapFragment = viewPager.adapter?.instantiateItem(viewPager, 2) as SupportMapFragment
      mapFragment.getMapAsync { mapboxMap -> mapboxMap.setStyle(Style.SATELLITE) }
    }

    if (Math.abs(3 - currentPosition) <= 1) {
      mapFragment = viewPager.adapter?.instantiateItem(viewPager, 3) as SupportMapFragment
      mapFragment.getMapAsync { mapboxMap -> mapboxMap.setStyle(Style.SATELLITE) }
    }

    if (Math.abs(4 - currentPosition) <= 1) {
      mapFragment = viewPager.adapter?.instantiateItem(viewPager, 4) as SupportMapFragment
      mapFragment.getMapAsync { mapboxMap -> mapboxMap.setStyle(Style.SATELLITE) }
    }
  }

  internal class MapFragmentAdapter(fragmentManager: FragmentManager) : FragmentStatePagerAdapter(fragmentManager) {

    override fun getCount(): Int {
      return NUM_ITEMS
    }

    override fun getItem(position: Int): Fragment? {
      var fragment: SupportMapFragment? = null
      val options = MapboxMapOptions()
      options.textureMode(true)

      when (position) {
        0 -> {
          options.camera(CameraPosition.Builder().target(LatLng(34.920526, 102.634774)).zoom(3.0).build())
          fragment = SupportMapFragment.newInstance(options)
          fragment.getMapAsync { mapboxMap -> mapboxMap.setStyle(Style.MAPBOX_STREETS) }
        }
        1 -> {
          options.camera(CameraPosition.Builder().target(LatLng(62.326440, 92.764913)).zoom(3.0).build())
          fragment = SupportMapFragment.newInstance(options)
          fragment.getMapAsync { mapboxMap -> mapboxMap.setStyle(Style.DARK) }
        }
        2 -> {
          options.camera(CameraPosition.Builder().target(LatLng(-25.007786, 133.623852)).zoom(3.0).build())
          fragment = SupportMapFragment.newInstance(options)
          fragment.getMapAsync { mapboxMap -> mapboxMap.setStyle(Style.SATELLITE) }
        }
        3 -> {
          options.camera(CameraPosition.Builder().target(LatLng(62.326440, 92.764913)).zoom(3.0).build())
          fragment = SupportMapFragment.newInstance(options)
          fragment.getMapAsync { mapboxMap -> mapboxMap.setStyle(Style.LIGHT) }
        }
        4 -> {
          options.camera(CameraPosition.Builder().target(LatLng(34.920526, 102.634774)).zoom(3.0).build())
          fragment = SupportMapFragment.newInstance(options)
          fragment.getMapAsync { mapboxMap -> mapboxMap.setStyle(Style.TRAFFIC_NIGHT) }
        }
      }
      return fragment
    }

    override fun getPageTitle(position: Int): CharSequence? {
      return "Page $position"
    }

    companion object {

      private val NUM_ITEMS = 5
    }
  }
}