/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 0 ĠR az ew are ĠLLC Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ċ Ġ* Ġall Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠNot with standing Ġthe Ġfore going , Ġyou Ġmay Ġnot Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ċ Ġ* Ġdistribute , Ġsublicense , Ġcreate Ġa Ġderivative Ġwork , Ġand / or Ġsell Ġcopies Ġof Ġthe Ċ Ġ* ĠSoftware Ġin Ġany Ġwork Ġthat Ġis Ġdesigned , Ġintended , Ġor Ġmarket ed Ġfor Ġped ag og ical Ġor Ċ Ġ* Ġinstruction al Ġpurposes Ġrelated Ġto Ġprogramming , Ġcoding , Ġapplication Ġdevelopment , Ċ Ġ* Ġor Ġinformation Ġtechnology . Ġ ĠPermission Ġfor Ġsuch Ġuse , Ġcopying , Ġmodification , Ċ Ġ* Ġmer ger , Ġpublication , Ġdistribution , Ġsublic ensing , Ġcreation Ġof Ġderivative Ġworks , Ċ Ġ* Ġor Ġsale Ġis Ġexpress ly Ġwith held . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN Ċ Ġ* ĠTHE ĠSOFTWARE . Ċ Ġ*/ Ċ Ċ package Ġcom . ray w ender lich . place book . view model Ċ Ċ import Ġandroid . app . Application Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . util . Log Ċ import Ġandroidx . lifecycle . Android ViewModel Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Transform ations Ċ import Ġcom . google . android . gms . maps . model . LatLng Ċ import Ġcom . google . android . libraries . places . api . model . Place Ċ import Ġcom . ray w ender lich . place book . model . Bookmark Ċ import Ġcom . ray w ender lich . place book . repository . Bookmark Repo Ċ Ċ class ĠMaps ViewModel ( application : ĠApplication ) Ġ: ĠAndroid ViewModel ( application ) Ġ{ ĊĊĠ Ġprivate Ġval ĠTAG Ġ= Ġ" Maps ViewModel " ĊĊĠ Ġprivate Ġval Ġbookmark Repo : ĠBook mark Repo Ġ= ĠBook mark Repo ( getApplication ()) ĊĠ Ġprivate Ġvar Ġbook marks : ĠLive Data < List < Bookmark Marker View >> ? Ġ= Ġnull ĊĊĠ Ġfun Ġadd Bookmark From Place ( place : ĠPlace , Ġimage : ĠBitmap ?) Ġ{ ĊĠĠĠ Ġval Ġbookmark Ġ= Ġbookmark Repo . create Bookmark () ĊĠĠĠ Ġbookmark . place Id Ġ= Ġplace . id ĊĠĠĠ Ġbookmark . name Ġ= Ġplace . name . toString () ĊĠĠĠ Ġbookmark . longitude Ġ= Ġplace . lat Lng ?. longitude Ġ?: Ġ 0 . 0 ĊĠĠĠ Ġbookmark . latitude Ġ= Ġplace . lat Lng ?. latitude Ġ?: Ġ 0 . 0 ĊĠĠĠ Ġbookmark . phone Ġ= Ġplace . phoneNumber . toString () ĊĠĠĠ Ġbookmark . address Ġ= Ġplace . address . toString () ĊĊĠĠĠ Ġval Ġnew Id Ġ= Ġbookmark Repo . add Bookmark ( bookmark ) ĊĠĠĠ ĠLog . i ( TAG , Ġ" New Ġbookmark Ġ$ new Id Ġadded Ġto Ġthe Ġdatabase .") ĊĠ Ġ} ĊĊĠ Ġfun Ġget Bookmark Marker Views (): ĠLive Data < List < Bookmark Marker View >> ? Ġ{ ĊĠĠĠ Ġif Ġ( bookmarks Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġmap Book marks To Marker View () ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġbook marks ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġmap Book marks To Marker View () Ġ{ ĊĠĠĠ Ġbook marks Ġ= ĠTransform ations . map ( bookmark Repo . all Book marks ) Ġ{ Ġrepo Book marks Ġ-> ĊĠĠĠĠĠ Ġrepo Book marks . map Ġ{ Ġbookmark Ġ-> ĊĠĠĠĠĠĠĠ Ġbookmark To Marker View ( bookmark ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġbookmark To Marker View ( bookmark : ĠBook mark ) Ġ= ĠBook mark Marker View ( ĊĠĠĠĠĠ Ġbookmark . id , ĊĠĠĠĠĠ ĠLat Lng ( bookmark . latitude , Ġbookmark . longitude ) ĊĠ Ġ) ĊĊĠ Ġdata Ġclass ĠBook mark Marker View ( ĊĠĠĠĠĠ Ġvar Ġid : ĠLong ? Ġ= Ġnull , ĊĠĠĠĠĠ Ġvar Ġlocation : ĠLat Lng Ġ= ĠLat Lng ( 0 . 0 , Ġ 0 . 0 ) ĊĠ Ġ) Ċ } Ċ