package Ġcom . ang cy o . amap 3 d . fragment Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroid . view . animation . Linear Interpolator Ċ import Ġandroidx . core . view . post Delayed Ċ import Ġcom . amap . api . maps . A Map Ċ import Ġcom . amap . api . maps . model . LatLng Ċ import Ġcom . amap . api . maps . model . Marker Ċ import Ġcom . amap . api . maps . model . animation . Animation Ċ import Ġcom . amap . api . services . core . A Map Exception Ċ import Ġcom . amap . api . services . core . Lat Lon Point Ċ import Ġcom . amap . api . services . core . Poi Item Ċ import Ġcom . amap . api . services . geo coder . Geo code Result Ċ import Ġcom . amap . api . services . geo coder . Geo code Search Ċ import Ġcom . amap . api . services . geo coder . Re geo code Query Ċ import Ġcom . amap . api . services . geo coder . Re geo code Result Ċ import Ġcom . amap . api . services . help . Input tips Ċ import Ġcom . amap . api . services . help . Input tips Query Ċ import Ġcom . amap . api . services . help . Tip Ċ import Ġcom . amap . api . services . po ise arch . Poi Result Ċ import Ġcom . amap . api . services . po ise arch . Poi Search Ċ import Ġcom . ang cy o . Dsl F Helper Ċ import Ġcom . ang cy o . amap 3 d .* Ċ import Ġcom . ang cy o . amap 3 d . core . Map Location Ċ import Ġcom . ang cy o . amap 3 d . core . R Texture MapView Ċ import Ġcom . ang cy o . amap 3 d . core . lat Lng Ċ import Ġcom . ang cy o . amap 3 d . core . to LatLng Ċ import Ġcom . ang cy o . amap 3 d . dsl item . Dsl Select Poi Item Ċ import Ġcom . ang cy o . base . back Ċ import Ġcom . ang cy o . base . on Fragment Result Ċ import Ġcom . ang cy o . base . set Fragment Result Ċ import Ġcom . ang cy o . core . fragment . Base Dsl Fragment Ċ import Ġcom . ang cy o . dsl adapter .* Ċ import Ġcom . ang cy o . dsl adapter . data . load Data End Ċ import Ġcom . ang cy o . dsl adapter . data . load Data End Index Ċ import Ġcom . ang cy o . library . L Ċ import Ġcom . ang cy o . library . ex ._ color Ċ import Ġcom . ang cy o . library . ex . dpi Ċ import Ġcom . ang cy o . library . ex . is Result Ok Ċ import Ġcom . ang cy o . library . model . single Page Ċ import Ġcom . ang cy o . widget . base .* Ċ import Ġcom . ang cy o . widget . recycler . init Dsl Adapter Ċ Ċ /** Ċ Ġ* Ġ é«ĺ å¾· åľ° åĽ¾ , Ġ éĢī ä½įç½® çķĮéĿ¢ Ċ Ġ* ĠEmail : ang cy o @ 1 2 6 . com Ċ Ġ* Ġ@ author Ġang cy o Ċ Ġ* Ġ@ date Ġ 2 0 2 0 / 0 6 / 1 3 Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 0 Ġang cy o . ĠAll Ġrights Ġreserved . Ċ Ġ*/ Ċ class ĠA Map Selector Fragment Ġ: ĠBase Dsl Fragment () Ġ{ ĊĊĠĠĠ Ġ// è¾ĵåħ¥ æıĲç¤º ç»ĵæŀľ å±ķç¤º çļĦ Dsl Adapter ĊĠĠĠ Ġlateinit Ġvar Ġtips Dsl Adapter : ĠD sl Adapter ĊĊĠĠĠ Ġ// åľ° åĽ¾ ä¸ŃéĹ´ æĺ¾ç¤º ä½įç½® æĮĩéĴĪ çļĦ marker ĊĠĠĠ Ġvar Ġcenter Marker : ĠMarker ? Ġ= Ġnull ĊĊĠĠĠ Ġval Ġmap View : ĠR Texture MapView ? Ġget () Ġ= Ġ_ vh . v < R Texture MapView >( R . id . lib _ map _ view ) ĊĊĠĠĠ Ġval Ġmap : ĠA Map ? Ġget () Ġ= Ġmap View ?. map ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġfragment Title Ġ= Ġ" éĢīæĭ© ä½įç½® " ĊĠĠĠĠĠĠĠ Ġfragment Layout Id Ġ= ĠR . layout . map _ selector _ fragment ĊĠĠĠĠĠĠĠ Ġpage . first Page Index Ġ= Ġ 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĠĠĠĠĠĠĠ Ġmap View ?. on Destroy R () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit Base View ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . init Base View ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġ_ vh . init MapView ( this , ĠsavedInstanceState ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// åľ° åĽ¾ äºĭä»¶ çĽĳåĲ¬ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Map Loaded Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcenter Marker Ġ= Ġadd Screen Center Marker Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġicon ( marker Icon ( R . drawable . map _ location _ point )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Camera ChangeListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(_ selected Map Location Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(_ selected Map Location !!. lat Lng (). distance ( it . target ) Ġ> Ġ 1 f ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Search ( it . target ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Search ( it . target ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ui åĪĿå§ĭåĮĸ ĊĠĠĠĠĠĠĠ Ġ_ vh . rv ( R . id . tips _ recycler _ view )?. init Dsl Adapter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtips Dsl Adapter Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ_ vh . enable ( R . id . lib _ send _ view , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġ_ vh . ev ( R . id . lib _ edit _ view )?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Text Change ( shake Delay Ġ= Ġ 3 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Tips ( it . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon I me Action Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// éĩįæĸ° èİ·åıĸ çĦ ¦ çĤ¹ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost Delayed ( 6 0 L ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ vh . focus < View >( R . id . lib _ edit _ view ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ_ vh . click ( R . id . lib _ search _ view ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ show To Search () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ_ vh . click ( R . id . lib _ cancel _ view ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ show To Normal () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ_ vh . click ( R . id . lib _ send _ view ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ result Map Location Ġ= Ġ_ selected Map Location ĊĠĠĠĠĠĠĠĠĠĠĠ Ġback () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// default ĊĠĠĠĠĠĠĠ Ġ_ show To Normal () ĊĊĠĠĠĠĠĠĠ Ġ// åįķ éĢī æ¨¡å¼ı ĊĠĠĠĠĠĠĠ Ġ_ adapter . single Model () ĊĠĠĠĠĠĠĠ Ġ_ adapter . to Loading () ĊĠĠĠĠĠĠĠ Ġ_ adapter . item Selector Helper . observer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Item Change Ġ= Ġ{ Ġselector Items , Ġ_, Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselector Items . first OrNull ()?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this Ġis ĠD sl Select Poi Item ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ selected Map Location Ġ= Ġitem Map Location ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// çĬ¶æĢģ çĽĳåĲ¬ ĊĠĠĠĠĠĠĠ Ġ_ adapter . on Refresh Or Load More Ġ{ Ġ_, Ġload More Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( load More ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonLoad More () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Refresh ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ_ show To Normal () Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ vh . ev ( R . id . lib _ edit _ view )?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhide Soft Input () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Input Text () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ_ vh . view ( R . id . search _ wrap _ layout )?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdo Animate Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanimate (). translation Y (- m H (). toFloat ()). set Duration ( 3 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with End Action Ġ{ Ġ_ vh . g one ( R . id . search _ wrap _ layout ) Ġ}. start () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ_ vh . g one ( R . id . lib _ content _ overlay _ wrap _ layout ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ_ show To Search () Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ vh . visible ( R . id . search _ wrap _ layout ) ĊĠĠĠĠĠĠĠ Ġ_ vh . visible ( R . id . lib _ content _ overlay _ wrap _ layout ) ĊĊĠĠĠĠĠĠĠ Ġ_ vh . view ( R . id . search _ wrap _ layout )?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdo Animate Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtranslation Y Ġ= Ġ- m H (). toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanimate (). translation Y ( 0 f ). set Duration ( 3 0 0 ). start () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ_ vh . view ( R . id . lib _ edit _ view )?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost Delayed ( 6 0 L ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Soft Input () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(_ vh . view ( R . id . search _ wrap _ layout ). isVisible ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ show To Normal () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Back Pressed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Fragment Set Result () Ġ{ ĊĠĠĠĠĠĠĠ Ġset Fragment Result (_ result Map Location ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// < editor - fold Ġdesc =" PO I æĲľç´¢ "> ĊĊĠĠĠ Ġ/** PO I æĲľç´¢ */ ĊĠĠĠ Ġval Ġpo i Search : ĠPo i Search Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠPo i Search ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf Context (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset On Poi Search Listener ( object Ġ: ĠPo i Search . On Poi Search Listener Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// poi Ġid æĲľç´¢ çļĦ ç»ĵæŀľ åĽŀè°ĥ , Ġæ Ĳ ľç´¢ æĮĩå®ļ poi çļĦ id æĹ¶ , Ġè¿ĶåĽŀ çļĦ åĽŀè°ĥ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Poi Item Se ar ched ( poi Item : ĠPo i Item ?, ĠerrorCode : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠL . d ( errorCode , Ġ" Ġ", Ġpo i Item ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// è¿ĶåĽŀ PO I æĲľç´¢ å¼ĤæŃ¥ å¤ĦçĲĨ çļĦ ç»ĵæŀľ ãĢĤ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Poi Se ar ched ( page Result : ĠPo i Result ?, ĠerrorCode : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcenter Marker ?. cancel Anim () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( page Result Ġ!= Ġnull Ġ&& Ġ_ last Poi Query Ġ== Ġpage Result . query ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( errorCode . is Search Success ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrender Poi Result ( page Result . pois ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ adapter . to Error () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ adapter . to Error () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġ_ last LatLng : ĠLat Lng ? Ġ= Ġnull ĊĊĠĠĠ Ġvar Ġ_ last Re geo code Query : ĠRe geo code Query ? Ġ= Ġnull ĊĊĠĠĠ Ġ// å±ħ ä¸Ń çĤ¹ çļĦ ä½įç½® ä¿¡æģ¯ ĊĠĠĠ Ġvar Ġ_ center Map Location : ĠMap Location ? Ġ= Ġnull ĊĊĠĠĠ Ġ// éĢī ä¸ŃçļĦ ä½įç½® ä¿¡æģ¯ ĊĠĠĠ Ġvar Ġ_ selected Map Location : ĠMap Location ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ vh . enable ( R . id . lib _ send _ view , Ġvalue Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap ?. moveTo ( to LatLng ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// map ?. move Include ( to LatLng (), Ġmap !!. my Location . to LatLng ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ// è¦ģ è¿ĶåĽŀ çļĦæķ°æį® ĊĠĠĠ Ġvar Ġ_ result Map Location : ĠMap Location ? Ġ= Ġnull ĊĊĠĠĠ Ġval Ġgeo code Search : ĠGeo code Search Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠGeo code Search ( f Context ()). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset On Geo code Search Listener ( object Ġ: ĠGeo code Search . On Geo code Search Listener Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ç»ı çº ¬ åº¦ Ġ è½¬ Ġä¸Ń æĸĩ åľ°åĿĢ åĽŀè°ĥ */ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Re geo code Se ar ched ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre geo code Result : ĠRe geo code Result ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠresultCode : ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// æł¹æį® ç»Ļ å®ļçļĦ ç»ı çº ¬ åº¦ åĴĮ æľĢå¤§ ç»ĵæŀľ æķ° è¿ĶåĽŀ éĢ Ĩ åľ° çĲĨ ç¼ĸçłģ çļĦ ç»ĵæŀľ åĪĹè¡¨ ãĢĤ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result Code Ġ== ĠA Map Exception . CODE _ A MAP _ SUCCESS Ġ&& Ġre geo code Result ?. re geo code Query Ġ== Ġ_ last Re geo code Query ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// è¿ĶåĽŀ æĪĲåĬŁ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( re geo code Result ?. re geo code Address ?. format Address Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// æľīæķĪ åľ°åĿĢ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ center Map Location Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMap Location . from ( re geo code Result . re geo code Address , Ġ_ last LatLng ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(_ adapter . is Adapter Status Loading ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Refresh ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ adapter . to Loading () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcenter Marker ?. cancel Anim () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ adapter . to Error () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// è¿ĶåĽŀ å¤±è´¥ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcenter Marker ?. cancel Anim () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ adapter . to Error () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ä¸Ńæĸĩ åľ°åĿĢ Ġ è½¬ Ġ ç»ı çº ¬ åº¦ åĽŀè°ĥ */ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Geo code Se ar ched ( geo code Result : ĠGeo code Result ?, ĠresultCode : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// no Ġop ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** å¼Ģå§ĭ æĲľç´¢ [ lat Lng ] éĻĦ è¿ĳ çļĦ poi ä¿¡æģ¯ */ ĊĠĠĠ Ġfun Ġstart Search ( lat Lng : ĠLat Lng ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(_ last LatLng Ġ!= Ġnull Ġ&& Ġ_ last LatLng !!. distance ( lat Lng ). apply Ġ{ ĠL . w ( this ) Ġ} Ġ<= Ġ 2 0 f ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// 2 0 ç±³ åĨħ çļĦ ç§»åĬ¨ ä¸į å¤ĦçĲĨ è¯·æ±Ĥ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcenter Marker ?. jump ( map !! , Ġ 5 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepeat Count Ġ= ĠAnimation . INF IN ITE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepeat Mode Ġ= ĠAnimation . RE VERSE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Interpolator ( Linear Interpolator ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Duration ( 5 0 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ_ last LatLng Ġ= Ġlat Lng ĊĊĠĠĠĠĠĠĠ Ġ// éľĢè¦ģ åħĪ å°Ĩ å½ĵåīį æĮĩéĴĪ æĮĩåĲĳ çļĦ ä½įç½® éĢ Ĩ åľ°åĿĢ ç¼ĸçłģ , Ġ åĨį è¯·æ±Ĥ åĳ¨ è¾¹ çļĦ PO I ä¿¡æģ¯ ĊĊĠĠĠĠĠĠĠ Ġval Ġquery Ġ= ĠRe geo code Query ( lat Lng . to Lat Lon Point (), Ġ 1 0 0 0 f , ĠGeo code Search . A MAP ) ĊĠĠĠĠĠĠĠ Ġ_ last Re geo code Query Ġ= Ġquery ĊĊĠĠĠĠĠĠĠ Ġ// Ġè®¾ç½® å¼ĤæŃ¥ éĢ Ĩ åľ° çĲĨ ç¼ĸçłģ è¯·æ±Ĥ ĊĠĠĠĠĠĠĠ Ġgeo code Search . get From Location As yn ( query ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonLoad Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Load Data () ĊĠĠĠĠĠĠĠ Ġ_ last LatLng ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Poi By Bound ( to Lat Lon Point ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġ_ last Poi Query : ĠPo i Search . Query ? Ġ= Ġnull ĊĊĠĠĠ Ġ/** æĲľç´¢ éĻĦ è¿ĳ çļĦ PO I ä¿¡æģ¯ */ ĊĠĠĠ Ġfun Ġsearch Poi By Bound ( lat Lon Point : ĠLat Lon Point ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ ç¬¬ä¸Ģä¸ª åıĤæķ° è¡¨ç¤º æĲľç´¢ åŃĹç¬¦ä¸² ï¼Į ç¬¬äºĮ ä¸ª åıĤæķ° è¡¨ç¤º poi æĲľç´¢ ç±»åŀĭ ï¼Į ç¬¬ä¸ī ä¸ª åıĤæķ° è¡¨ç¤º poi æĲľç´¢ åĮºåŁŁ ï¼Ī ç©º åŃĹç¬¦ä¸² ä»£è¡¨ åħ¨ åĽ½ ï¼ī ĊĠĠĠĠĠĠĠ Ġval Ġquery Ġ= ĠPo i Search . Query ("", Ġnull ) ĊĠĠĠĠĠĠĠ Ġ// Ġè®¾ç½® æ¯ı é¡µ æľĢ å¤ļ è¿ĶåĽŀ å¤ļå°ĳ æĿ¡ poi item ĊĠĠĠĠĠĠĠ Ġquery . pageSize Ġ= Ġpage . request PageSize ĊĠĠĠĠĠĠĠ Ġ// Ġè®¾ç½® æŁ¥ ç¬¬ä¸Ģ é¡µ ĊĠĠĠĠĠĠĠ Ġquery . pageNum Ġ= Ġpage . request Page Index ĊĊĠĠĠĠĠĠĠ Ġ// Ġè®¾ç½® æĲľç´¢ åĮºåŁŁ ä¸º ä»¥ lp çĤ¹ ä¸º åľĨ å¿ĥ ï¼Į åħ¶ åĳ¨ åĽ´ 5 0 0 0 ç±³ èĮĥåĽ´ ĊĠĠĠĠĠĠĠ Ġpo i Search . bound Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPo i Search . Search Bound ( lat Lon Point Ġ/* è¯¥ èĮĥåĽ´ çļĦ ä¸Ńå¿ĥ çĤ¹ ãĢĤ */, Ġ 5 0 0 0 Ġ/* åįĬ å¾Ħ ï¼Į åįķä½į ï¼ļ ç±³ ãĢĤ */, Ġtrue /* æĺ¯åĲ¦ æĮīçħ§ è·Ŀç¦» æİĴåºı ãĢĤ */) ĊĊĠĠĠĠĠĠĠ Ġ_ last Poi Query Ġ= Ġquery ĊĠĠĠĠĠĠĠ Ġpo i Search . query Ġ= Ġquery ĊĊĠĠĠĠĠĠĠ Ġpo i Search . search PO I As yn () Ġ// Ġ å¼ĤæŃ¥ æĲľç´¢ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrender Poi Result ( list : ĠList < Poi Item > ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlocation List Ġ= Ġmutable ListOf < Map Location >() ĊĊĠĠĠĠĠĠĠ Ġif Ġ( page . is First Page ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ center Map Location ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpo i Name Ġ= Ġ"[ ä½įç½® ]" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation List . add ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġlist ?. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocation List . add ( Map Location . from ( it )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ_ adapter . load Data End Index ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠD sl Select Poi Item :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocation List , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpage ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġbean , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Map Location Ġ= Ġbean ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Bottom Insert Ġ= Ġ 1 Ġ* Ġdpi ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Left Offset Ġ= Ġ 1 0 Ġ* Ġdpi ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Right Offset Ġ= Ġitem Left Offset ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Decoration Color Ġ= Ġ_ color ( R . color . lib _ line _ dark ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Is Selected Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Click Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ adapter . item Selector Helper . selector ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( page . is First Page ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ adapter . on Dispatch Updates Once Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ adapter . item Selector Helper . selector ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// </ editor - fold Ġdesc =" PO I æĲľç´¢ "> ĊĊĠĠĠ Ġ// < editor - fold Ġdesc =" è¾ĵåħ¥ æıĲç¤º æĲľç´¢ "> ĊĊĠĠĠ Ġval Ġinput Tips Search : ĠInput tips Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠInput tips ( f Context (), ĠInput tips Query ("", Ġnull )). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// è¾ĵåħ¥ æıĲç¤º åĽŀè°ĥ çļĦæĸ¹æ³ķ ãĢĤ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Input tips Listener Ġ{ Ġmutable List , Ġresult ID Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result ID . is Search Success () Ġ&& Ġmutable List . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrender Tips Result ( mutable List ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtips Dsl Adapter . to Error () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsearch Tips ( keyword : ĠString ?, Ġcity : ĠString ? Ġ= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( keyword . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ vh . g one ( R . id . tips _ recycler _ view ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ_ vh . visible ( R . id . tips _ recycler _ view ) ĊĠĠĠĠĠĠĠ Ġtips Dsl Adapter . to Loading () ĊĊĠĠĠĠĠĠĠ Ġval Ġquery Ġ= ĠInput tips Query ( keyword , Ġcity ) ĊĊĠĠĠĠĠĠĠ Ġinput Tips Search . query Ġ= Ġquery ĊĠĠĠĠĠĠĠ Ġinput Tips Search . request Input tips As yn () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrender Tips Result ( list : ĠList < Tip > ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġtips Dsl Adapter . load Data End ( Dsl Select Poi Item :: class . java , Ġlist , Ġnull , Ġsingle Page ()) Ġ{ Ġbean Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Map Location Ġ= ĠMap Location . from ( bean ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Bottom Insert Ġ= Ġ 1 Ġ* Ġdpi ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Decoration Color Ġ= Ġ_ color ( R . color . lib _ line _ dark ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Click Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ show To Normal () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbean . point ?. to Lat Lon ()?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap ?. moveTo ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// </ editor - fold Ġdesc =" è¾ĵåħ¥ æıĲç¤º æĲľç´¢ "> Ċ Ċ } Ċ Ċ /** å¿«éĢŁ åĲ¯åĬ¨ é«ĺ å¾· åľ° åĽ¾ éĢī ä½įç½® çķĮéĿ¢ , Ġ å¹¶ èİ·åıĸ è¿ĶåĽŀ åĢ¼ */ Ċ fun ĠD sl F Helper . a Map Selector ( result : Ġ( location : ĠMap Location ?) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġshow ( A Map Selector Fragment :: class . java ) Ġ{ ĊĠĠĠĠĠĠĠ Ġon Fragment Result Ġ{ ĠresultCode , Ġdata Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result Code . is Result Ok () Ġ&& Ġdata Ġis ĠMap Location ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }