Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 我的应用程序正在显示空白地图_Android_Google Maps_Google Cloud Platform_Google Maps Android Api 2 - Fatal编程技术网

Android 我的应用程序正在显示空白地图

Android 我的应用程序正在显示空白地图,android,google-maps,google-cloud-platform,google-maps-android-api-2,Android,Google Maps,Google Cloud Platform,Google Maps Android Api 2,我在我的应用程序中使用谷歌地图api。地图工作正常,但现在变为空白。地图仍在工作,但没有加载地图。我搜索了几个小时的答案,但没有得到任何结果。我在谷歌云平台创建了一个新的api,并放置了该api,但仍然没有加载地图。 任何能帮我的人。谢谢 这是空白地图的截图。 07-21 21:28:59.573 18146-18265/com.example.har.firebaseauthenticationdemo E/Google地图Android API:授权失败。请看https://develop

我在我的应用程序中使用谷歌地图api。地图工作正常,但现在变为空白。地图仍在工作,但没有加载地图。我搜索了几个小时的答案,但没有得到任何结果。我在谷歌云平台创建了一个新的api,并放置了该api,但仍然没有加载地图。 任何能帮我的人。谢谢

这是空白地图的截图。

07-21 21:28:59.573 18146-18265/com.example.har.firebaseauthenticationdemo E/Google地图Android API:授权失败。请看https://developers.google.com/maps/documentation/android-api/start 了解如何正确设置地图。
07-21:28:59.575 18146-18265/com.example.har.firebaseauthenticationdemo E/Google地图Android API:在Google开发者控制台中(https://console.developers.google.com)
确保“谷歌地图Android API v2”已启用。
确保存在以下Android密钥:
API密钥:AIzaSyDWCP4m0DF57jZU4V8Yr7RFP2-DmhpgL34
Android应用程序(;):0E:0E:68:77:05:BB:76:A3:5C:BC:62:F8:6A:AB:A5:5F:2A:7F:37:5F;com.example.har.firebaseauthenticationdemo
07-21 21:29:00.571 2256-2451/? E/Auth:[GoogleAccountDataServiceImpl]getToken()->错误的身份验证。帐户:,应用程序:com.google.android.gms,服务:oauth2:https://www.googleapis.com/auth/login_manager
fkq:长期有效凭据不可用。
在fkr.b(:com.google.android)。gms@12529024@12.5.29 (040700-192802242):20)
在fkr.a(:com.google.android)。gms@12529024@12.5.29 (040700-192802242):50)
在fjb.a(:com.google.android)。gms@12529024@12.5.29 (040700-192802242):35)
在gzf.a(:com.google.android)。gms@12529024@12.5.29 (040700-192802242):8)
在gzf.a(:com.google.android)。gms@12529024@12.5.29 (040700-192802242):160)
在gyf.a(:com.google.android)。gms@12529024@12.5.29 (040700-192802242):2)
在gyc.a(:com.google.android)。gms@12529024@12.5.29 (040700-192802242):17)
在gyc.a(:com.google.android)。gms@12529024@12.5.29 (040700-192802242):6)
在cug.a(:com.google.android)。gms@12529024@12.5.29 (040700-192802242):25)
在cug.a(:com.google.android)。gms@12529024@12.5.29 (040700-192802242):79)
在cug.onTransact(:com.google.android)。gms@12529024@12.5.29 (040700-192802242):8)
位于android.os.Binder.transact(Binder.java:627)
在cwl.onTransact(:com.google.android)。gms@12529024@12.5.29 (040700-192802242):3)
位于android.os.Binder.execTransact(Binder.java:697)
07-21 21:29:00.611 2256-3646/? E/Auth:[GoogleAccountDataServiceImpl]getToken()->错误的身份验证。帐户:,应用程序:com.google.android.gms,服务:oauth2:https://www.googleapis.com/auth/login_manager
fkq:长期有效凭据不可用。
在fkr.b(:com.google.android)。gms@12529024@12.5.29 (040700-192802242):20)
在fkr.a(:com.google.android)。gms@12529024@12.5.29 (040700-192802242):50)
在fjb.a(:com.google.android)。gms@12529024@12.5.29 (040700-192802242):35)
在gzf.a(:com.google.android)。gms@12529024@12.5.29 (040700-192802242):8)
在gzf.a(:com.google.android)。gms@12529024@12.5.29 (040700-192802242):160)
在gyf.a(:com.google.android)。gms@12529024@12.5.29 (040700-192802242):2)
在gyc.a(:com.google.android)。gms@12529024@12.5.29 (040700-192802242):17)
在gyc.a(:com.google.android)。gms@12529024@12.5.29 (040700-192802242):6)
在cug.a(:com.google.android)。gms@12529024@12.5.29 (040700-192802242):25)
在cug.a(:com.google.android)。gms@12529024@12.5.29 (040700-192802242):79)
在cug.onTransact(:com.google.android)。gms@12529024@12.5.29 (040700-192802242):8)
位于android.os.Binder.transact(Binder.java:627)
在cwl.onTransact(:com.google.android)。gms@12529024@12.5.29 (040700-192802242):3)
位于android.os.Binder.execTransact(Binder.java:697)
07-21 21:29:00.673 2256-3646/? E/Auth:[GoogleAccountDataServiceImpl]getToken()->错误的身份验证。帐户:,应用程序:com.google.android.gms,服务:oauth2:https://www.googleapis.com/auth/login_manager
fkq:长期有效凭据不可用。
在fkr.b(:com.google.android)。gms@12529024@12.5.29 (040700-192802242):20)
在fkr.a(:com.google.android)。gms@12529024@12.5.29 (040700-192802242):50)
在fjb.a(:com.google.android)。gms@12529024@12.5.29 (040700-192802242):35)
在gzf.a(:com.google.android)。gms@1252902
07-21 21:28:59.573 18146-18265/com.example.har.firebaseauthenticationdemo E/Google Maps Android API: Authorization failure.  Please see https://developers.google.com/maps/documentation/android-api/start for how to correctly set up the map.
07-21 21:28:59.575 18146-18265/com.example.har.firebaseauthenticationdemo E/Google Maps Android API: In the Google Developer Console (https://console.developers.google.com)
                                                                                                     Ensure that the "Google Maps Android API v2" is enabled.
                                                                                                     Ensure that the following Android Key exists:
                                                                                                        API Key: AIzaSyDWCP4m0DF57jZU4V8Yr7RFP2-DmhpgL34
                                                                                                        Android Application (<cert_fingerprint>;<package_name>): 0E:0E:68:77:05:BB:76:A3:5C:BC:62:F8:6A:AB:A5:5F:2A:7F:37:5F;com.example.har.firebaseauthenticationdemo
07-21 21:29:00.571 2256-2451/? E/Auth: [GoogleAccountDataServiceImpl] getToken() -> BAD_AUTHENTICATION. Account: <ELLIDED:-895295850>, App: com.google.android.gms, Service: oauth2:https://www.googleapis.com/auth/login_manager
                                       fkq: Long live credential not available.
                                           at fkr.b(:com.google.android.gms@12529024@12.5.29 (040700-192802242):20)
                                           at fkr.a(:com.google.android.gms@12529024@12.5.29 (040700-192802242):50)
                                           at fjb.a(:com.google.android.gms@12529024@12.5.29 (040700-192802242):35)
                                           at gzf.a(:com.google.android.gms@12529024@12.5.29 (040700-192802242):8)
                                           at gzf.a(:com.google.android.gms@12529024@12.5.29 (040700-192802242):160)
                                           at gyf.a(:com.google.android.gms@12529024@12.5.29 (040700-192802242):2)
                                           at gyc.a(:com.google.android.gms@12529024@12.5.29 (040700-192802242):17)
                                           at gyc.a(:com.google.android.gms@12529024@12.5.29 (040700-192802242):6)
                                           at cug.a(:com.google.android.gms@12529024@12.5.29 (040700-192802242):25)
                                           at cug.a(:com.google.android.gms@12529024@12.5.29 (040700-192802242):79)
                                           at cug.onTransact(:com.google.android.gms@12529024@12.5.29 (040700-192802242):8)
                                           at android.os.Binder.transact(Binder.java:627)
                                           at cwl.onTransact(:com.google.android.gms@12529024@12.5.29 (040700-192802242):3)
                                           at android.os.Binder.execTransact(Binder.java:697)
07-21 21:29:00.611 2256-3646/? E/Auth: [GoogleAccountDataServiceImpl] getToken() -> BAD_AUTHENTICATION. Account: <ELLIDED:-895295850>, App: com.google.android.gms, Service: oauth2:https://www.googleapis.com/auth/login_manager
                                       fkq: Long live credential not available.
                                           at fkr.b(:com.google.android.gms@12529024@12.5.29 (040700-192802242):20)
                                           at fkr.a(:com.google.android.gms@12529024@12.5.29 (040700-192802242):50)
                                           at fjb.a(:com.google.android.gms@12529024@12.5.29 (040700-192802242):35)
                                           at gzf.a(:com.google.android.gms@12529024@12.5.29 (040700-192802242):8)
                                           at gzf.a(:com.google.android.gms@12529024@12.5.29 (040700-192802242):160)
                                           at gyf.a(:com.google.android.gms@12529024@12.5.29 (040700-192802242):2)
                                           at gyc.a(:com.google.android.gms@12529024@12.5.29 (040700-192802242):17)
                                           at gyc.a(:com.google.android.gms@12529024@12.5.29 (040700-192802242):6)
                                           at cug.a(:com.google.android.gms@12529024@12.5.29 (040700-192802242):25)
                                           at cug.a(:com.google.android.gms@12529024@12.5.29 (040700-192802242):79)
                                           at cug.onTransact(:com.google.android.gms@12529024@12.5.29 (040700-192802242):8)
                                           at android.os.Binder.transact(Binder.java:627)
                                           at cwl.onTransact(:com.google.android.gms@12529024@12.5.29 (040700-192802242):3)
                                           at android.os.Binder.execTransact(Binder.java:697)
07-21 21:29:00.673 2256-3646/? E/Auth: [GoogleAccountDataServiceImpl] getToken() -> BAD_AUTHENTICATION. Account: <ELLIDED:-895295850>, App: com.google.android.gms, Service: oauth2:https://www.googleapis.com/auth/login_manager
                                       fkq: Long live credential not available.
                                           at fkr.b(:com.google.android.gms@12529024@12.5.29 (040700-192802242):20)
                                           at fkr.a(:com.google.android.gms@12529024@12.5.29 (040700-192802242):50)
                                           at fjb.a(:com.google.android.gms@12529024@12.5.29 (040700-192802242):35)
                                           at gzf.a(:com.google.android.gms@12529024@12.5.29 (040700-192802242):8)
                                           at gzf.a(:com.google.android.gms@12529024@12.5.29 (040700-192802242):160)
                                           at gyf.a(:com.google.android.gms@12529024@12.5.29 (040700-192802242):2)
                                           at gyc.a(:com.google.android.gms@12529024@12.5.29 (040700-192802242):17)
                                           at gyc.a(:com.google.android.gms@12529024@12.5.29 (040700-192802242):6)
                                           at cug.a(:com.google.android.gms@12529024@12.5.29 (040700-192802242):25)
                                           at cug.a(:com.google.android.gms@12529024@12.5.29 (040700-192802242):79)
                                           at cug.onTransact(:com.google.android.gms@12529024@12.5.29 (040700-192802242):8)
                                           at android.os.Binder.transact(Binder.java:627)
                                           at cwl.onTransact(:com.google.android.gms@12529024@12.5.29 (040700-192802242):3)
                                           at android.os.Binder.execTransact(Binder.java:697)
07-21 21:29:00.748 2426-18282/? E/ChromeSync: [Sync,SyncAdapter] Failed to sync.
                                              mbz: fgj: BadAuthentication
                                                  at mfy.a(:com.google.android.gms@12529024@12.5.29 (040700-192802242):5)
                                                  at mgm.a(:com.google.android.gms@12529024@12.5.29 (040700-192802242):42)
                                                  at mgn.a(:com.google.android.gms@12529024@12.5.29 (040700-192802242):22)
                                                  at mgn.a(:com.google.android.gms@12529024@12.5.29 (040700-192802242):73)
                                                  at mgn.b(:com.google.android.gms@12529024@12.5.29 (040700-192802242):7)
                                                  at mgl.a(:com.google.android.gms@12529024@12.5.29 (040700-192802242):41)
                                                  at nrg.onPerformSync(:com.google.android.gms@12529024@12.5.29 (040700-192802242):5)
                                                  at android.content.AbstractThreadedSyncAdapter$SyncThread.run(AbstractThreadedSyncAdapter.java:321)
                                               Caused by: fgj: BadAuthentication
                                                  at ffx.a(:com.google.android.gms@12529024@12.5.29 (040700-192802242):13)
                                                  at ffw.a(:com.google.android.gms@12529024@12.5.29 (040700-192802242):2)
                                                  at ffw.e(:com.google.android.gms@12529024@12.5.29 (040700-192802242):6)
                                                  at ffw.d(:com.google.android.gms@12529024@12.5.29 (040700-192802242):1)
                                                  at ffu.b(:com.google.android.gms@12529024@12.5.29 (040700-192802242):1)
                                                  at nms.b(Unknown Source:6)
                                                  at nlf.b(:com.google.android.gms@12529024@12.5.29 (040700-192802242):5)
                                                  at nlw.a(:com.google.android.gms@12529024@12.5.29 (040700-192802242):58)
                                                  at mfy.a(:com.google.android.gms@12529024@12.5.29 (040700-192802242):1)
                                                  at mgm.a(:com.google.android.gms@12529024@12.5.29 (040700-192802242):42) 
                                                  at mgn.a(:com.google.android.gms@12529024@12.5.29 (040700-192802242):22) 
                                                  at mgn.a(:com.google.android.gms@12529024@12.5.29 (040700-192802242):73) 
                                                  at mgn.b(:com.google.android.gms@12529024@12.5.29 (040700-192802242):7) 
                                                  at mgl.a(:com.google.android.gms@12529024@12.5.29 (040700-192802242):41) 
                                                  at nrg.onPerformSync(:com.google.android.gms@12529024@12.5.29 (040700-192802242):5) 
                                                  at android.content.AbstractThreadedSyncAdapter$SyncThread.run(AbstractThreadedSyncAdapter.java:321) 
07-21 21:29:03.389 1599-1612/? E/memtrack: Couldn't load memtrack module
07-21 21:29:05.559 1599-1612/? E/memtrack: Couldn't load memtrack module
07-21 21:29:05.574 1599-1612/? E/memtrack: Couldn't load memtrack module
07-21 21:29:12.866 2256-18310/? E/Auth: [GoogleAccountDataServiceImpl] getToken() -> BAD_AUTHENTICATION. Account: <ELLIDED:-895295850>, App: com.google.android.gms, Service: oauth2:https://www.googleapis.com/auth/experimentsandconfigs
                                        fkq: Long live credential not available.
                                            at fkr.b(:com.google.android.gms@12529024@12.5.29 (040700-192802242):20)
                                            at fkr.a(:com.google.android.gms@12529024@12.5.29 (040700-192802242):50)
                                            at fjb.a(:com.google.android.gms@12529024@12.5.29 (040700-192802242):35)
                                            at gzf.a(:com.google.android.gms@12529024@12.5.29 (040700-192802242):8)
                                            at gzf.a(:com.google.android.gms@12529024@12.5.29 (040700-192802242):160)
                                            at gyf.a(:com.google.android.gms@12529024@12.5.29 (040700-192802242):2)
                                            at gyc.a(:com.google.android.gms@12529024@12.5.29 (040700-192802242):17)
                                            at gyc.a(:com.google.android.gms@12529024@12.5.29 (040700-192802242):6)
                                            at cug.a(:com.google.android.gms@12529024@12.5.29 (040700-192802242):25)
                                            at cug.a(:com.google.android.gms@12529024@12.5.29 (040700-192802242):79)
                                            at ffx.a(:com.google.android.gms@12529024@12.5.29 (040700-192802242):6)
                                            at ffw.a(:com.google.android.gms@12529024@12.5.29 (040700-192802242):2)
                                            at ffw.e(:com.google.android.gms@12529024@12.5.29 (040700-192802242):6)
                                            at ffu.f(:com.google.android.gms@12529024@12.5.29 (040700-192802242):3)
                                            at ffu.a(:com.google.android.gms@12529024@12.5.29 (040700-192802242):4)
                                            at ffu.a(:com.google.android.gms@12529024@12.5.29 (040700-192802242):7)
                                            at aenk.a(:com.google.android.gms@12529024@12.5.29 (040700-192802242):22)
                                            at aenm.a(:com.google.android.gms@12529024@12.5.29 (040700-192802242):130)
                                            at aenm.a(:com.google.android.gms@12529024@12.5.29 (040700-192802242):243)
                                            at aenm.a(:com.google.android.gms@12529024@12.5.29 (040700-192802242):404)
                                            at com.google.android.gms.phenotype.sync.HeterodyneSyncTaskChimeraService.a(:com.google.android.gms@12529024@12.5.29 (040700-192802242):66)
                                            at com.google.android.gms.phenotype.sync.HeterodyneSyncTaskChimeraService.a(:com.google.android.gms@12529024@12.5.29 (040700-192802242):20)
                                            at ulu.run(:com.google.android.gms@12529024@12.5.29 (040700-192802242):1)
                                            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
                                            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
                                            at java.lang.Thread.run(Thread.java:764)
07-21 21:29:12.884 2256-18310/? E/HeterodyneSyncTaskChime: Failed to get auth token: User intervention required. Notification has been pushed. -- metadata{ service_id: 51 }
                                                           fgk: User intervention required. Notification has been pushed.
                                                               at ffu.f(:com.google.android.gms@12529024@12.5.29 (040700-192802242):10)
                                                               at ffu.a(:com.google.android.gms@12529024@12.5.29 (040700-192802242):4)
                                                               at ffu.a(:com.google.android.gms@12529024@12.5.29 (040700-192802242):7)
                                                               at aenk.a(:com.google.android.gms@12529024@12.5.29 (040700-192802242):22)
                                                               at aenm.a(:com.google.android.gms@12529024@12.5.29 (040700-192802242):130)
                                                               at aenm.a(:com.google.android.gms@12529024@12.5.29 (040700-192802242):243)
                                                               at aenm.a(:com.google.android.gms@12529024@12.5.29 (040700-192802242):404)
                                                               at com.google.android.gms.phenotype.sync.HeterodyneSyncTaskChimeraService.a(:com.google.android.gms@12529024@12.5.29 (040700-192802242):66)
                                                               at com.google.android.gms.phenotype.sync.HeterodyneSyncTaskChimeraService.a(:com.google.android.gms@12529024@12.5.29 (040700-192802242):20)
                                                               at ulu.run(:com.google.android.gms@12529024@12.5.29 (040700-192802242):1)
                                                               at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
                                                               at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
                                                               at java.lang.Thread.run(Thread.java:764)
buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            resValue "string", "google_maps_api_key", "Release_API_KEY"
        }
        debug {
//          KL MBP debug Key
            resValue "string", "google_maps_api_key", "DEBUG_API_KEY"
//          KL Old Machine debug Key
//            resValue "string", "google_maps_api_key", "DEBUG_API_KEY"
        }
    }
    <meta-data
        android:name="com.google.android.maps.v2.API_KEY"
        android:value="@string/google_maps_api_key"/>

    <uses-library
        android:name="com.google.android.maps"
        android:required="true" />
 keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android 
keytool -list -v -keystore "%USERPROFILE%\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android
<meta-data
    android:name="com.google.android.geo.API_KEY"
    android:value="@string/google_maps_key" />
<string name="google_maps_key">YOUR_API_KEY</string>
<fragment
   android:id="@+id/placesMap"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:layout_marginTop="8dp"
   android:layout_marginBottom="8dp"
   android:tag="@string/tag_places_search_map"
   class="com.google.android.gms.maps.SupportMapFragment" />
class SampleActivity :
        GoogleMap.OnMarkerClickListener,
        GoogleMap.OnMarkerDragListener,
        GoogleMap.OnInfoWindowClickListener,
        GoogleMap.OnInfoWindowLongClickListener,
        GoogleMap.OnInfoWindowCloseListener,
        OnMapAndViewReadyListener.OnGlobalLayoutAndMapReadyListener,
        GoogleMap.OnMapLoadedCallback
{
    private lateinit var map: GoogleMap

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        val mapFragment = supportFragmentManager.findFragmentById(R.id.placesMap) as SupportMapFragment
        OnMapAndViewReadyListener(mapFragment, this)
    }

    internal inner class CustomInfoWindowAdapter : GoogleMap.InfoWindowAdapter {

        // These are both view groups containing an ImageView with id "badge" and two
        // TextViews with id "title" and "snippet".
        private val window: View = layoutInflater.inflate(R.layout.custom_info_window, null)
        private val contents: View = layoutInflater.inflate(R.layout.custom_info_contents, null)

        override fun getInfoWindow(marker: Marker): View? {
             render(marker, window)
            return window
        }

        override fun getInfoContents(marker: Marker): View? {
            render(marker, contents)
            return contents
        }

        private fun render(marker: Marker, view: View) {

            // Set the title and snippet for the custom info window
            val title: String? = marker.title
            val titleUi = view.findViewById<TextView>(R.id.title)

            if (title != null) {
                // Spannable string allows us to edit the formatting of the text.
                titleUi.text = SpannableString(title).apply {
                    setSpan(ForegroundColorSpan(resources.getColor(R.color.text_grey_heading)), 0, length, 0)
                }
            } else {
                titleUi.text = ""
            }

            val snippet: String? = marker.snippet
            val snippetUi = view.findViewById<TextView>(R.id.snippet)
            snippetUi.text = snippet
        }
    }

    override fun onMarkerClick(marker: Marker?): Boolean {
        marker?.zIndex = marker?.zIndex?.plus(1.0f)!!
        val handler = Handler()
        val start = SystemClock.uptimeMillis()
        val duration = 1500

        val interpolator = BounceInterpolator()

        handler.post(object : Runnable {
            override fun run() {
                val elapsed = SystemClock.uptimeMillis() - start
                val t = Math.max(
                        1 - interpolator.getInterpolation(elapsed.toFloat() / duration), 0f)
                marker?.setAnchor(0.5f, 1.0f + 2 * t)

                // Post again 16ms later.
                if (t > 0.0) {
                    handler.postDelayed(this, 16)
                }
            }
        })
        return false
    }

    override fun onMarkerDragEnd(p0: Marker?) {
    }

    override fun onMarkerDragStart(p0: Marker?) {
    }

    override fun onMarkerDrag(p0: Marker?) {
    }

    override fun onInfoWindowClick(marker : Marker) {
        //Toast.makeText(this, "Click Info Window", Toast.LENGTH_SHORT).show()
    }

    override fun onInfoWindowClose(marker : Marker) {
        //Toast.makeText(this, "Close Info Window", Toast.LENGTH_SHORT).show()
    }

    override fun onInfoWindowLongClick(marker : Marker) {
        //Toast.makeText(this, "Info Window long click", Toast.LENGTH_SHORT).show()
    }

    override fun onMapLoaded() {
        addMarkersToMap()
    }

    override fun onMapReady(googleMap: GoogleMap?) {
        map = googleMap ?: return

        with(map) {
            // Hide the zoom controls as the button panel will cover it.
            uiSettings.isZoomControlsEnabled = false

            // Setting an info window adapter allows us to change the both the contents and
            // look of the info window.
            setInfoWindowAdapter(CustomInfoWindowAdapter())

            // Set listeners for marker events.  See the bottom of this class for their behavior.
            setOnMarkerClickListener(this@SampleActivity)
            setOnInfoWindowClickListener(this@SampleActivity)
            setOnMarkerDragListener(this@SampleActivity)
            setOnInfoWindowCloseListener(this@SampleActivity)
            setOnInfoWindowLongClickListener(this@SampleActivity)
            setOnMapLoadedCallback(this@SampleActivity)

            // Override the default content description on the view, for accessibility mode.
            // Ideally this string would be localised.
            setContentDescription("Map with lots of markers.")
        }
    }

    fun addMarkersToMap(data: List<Places>) {
        // create bounds that encompass every location we reference
        val boundsBuilder = LatLngBounds.Builder()

        data.map { place -> boundsBuilder.include(LatLng(place.venue.location.lat!!,place.venue.location.lng)) }
        val bounds = boundsBuilder.build()
        with(map){
            moveCamera(CameraUpdateFactory.newLatLngBounds(bounds, 50))
        }
        val list : MutableList<PlaceDetails> = mutableListOf<PlaceDetails>()
        for (place in data){
            list.add(PlaceDetails(place.id,LatLng(place.venue.location.lat!!,place.venue.location.lng),
                    place.venue.name,
                    place.getDistance()))
        }

        //add Seattle center as marker on map
        var seattlePD : PlaceDetails = PlaceDetails(TConstants.SEATTLLE_ID,
            LatLng(resources.getString(R.string.seattle_lat).toDouble(), resources.getString(R.string.seattle_long).toDouble()),
                "Seattle","Seattle Center",
                BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_CYAN))
        map.addMarker(MarkerOptions()
                .position(seattlePD.position)
                .title(seattlePD.title)
                .snippet(seattlePD.snippet)
                .icon(seattlePD.icon)
                .infoWindowAnchor(seattlePD.infoWindowAnchorX, seattlePD.infoWindowAnchorY)
                .draggable(seattlePD.draggable)
                .zIndex(seattlePD.zIndex))

        for (placeDetails in list){
            var marker = map.addMarker(MarkerOptions()
                    .position(placeDetails.position)
                    .title(placeDetails.title)
                    .snippet("Distance : "+placeDetails.snippet)
                    .icon(placeDetails.icon)
                    .infoWindowAnchor(placeDetails.infoWindowAnchorX, placeDetails.infoWindowAnchorY)
                    .draggable(placeDetails.draggable)
                    .zIndex(placeDetails.zIndex))
            searchViewModel.markerTracker.put(marker.id,placeDetails)
        }
    }
}