11var React = require ( 'react-native' ) ;
2+ var Geolocation = require ( 'Geolocation' ) ;
23var Util = require ( './util' ) ;
34var Detail = require ( './detail' ) ;
45
1112 ActivityIndicatorIOS,
1213 TouchableOpacity,
1314 LinkingIOS,
14- ActionSheetIOS
15+ ActionSheetIOS,
16+ WebView,
17+ AsyncStorage
1518} = React ;
1619
1720var List = React . createClass ( {
@@ -54,10 +57,11 @@ var List = React.createClass({
5457 ) ;
5558 }
5659 }
60+ var placeholder = '搜索' + this . props . type ;
5761 return (
5862 < ScrollView style = { styles . container } >
5963 < View style = { styles . searchBg } >
60- < TextInput style = { styles . input } placeholder = "搜索美食"
64+ < TextInput style = { styles . input } placeholder = { placeholder }
6165 onChangeText = { this . _onChangeText }
6266 onEndEditing = { this . _onEndEditing } />
6367 < View >
@@ -75,12 +79,30 @@ var List = React.createClass({
7579 ) ;
7680 } ,
7781 componentDidMount : function ( ) {
78- var url = Util . searchURL + 'key=' + Util . amapKey + '&keywords='
79- + this . props . type + '&location=121.390686,31.213976&extensions=base' ;
82+ var that = this ;
83+ Geolocation . getCurrentPosition ( function ( data ) {
84+ var lnglat = data . coords . longitude + ',' + data . coords . latitude ;
85+ AsyncStorage . setItem ( 'pos' , lnglat ) ;
86+ var url = Util . searchURL + 'key=' + Util . amapKey + '&keywords='
87+ + that . props . type + '&extensions=base' ;
88+ if ( _GEO_OPEN ) {
89+ url += '&location=' + lnglat ;
90+ that . _doGetData ( url ) ;
91+ } else {
92+ url += '&location=' + _GEO_TEST_POS ;
93+ that . _doGetData ( url ) ;
94+ }
95+ } , function ( err ) {
96+ alert ( '定位失败,请重新开启应用定位' ) ;
97+ } ) ;
98+ } ,
99+
100+ _doGetData : function ( url ) {
80101 var that = this ;
81102 Util . getJSON ( url , function ( data ) {
82103 if ( data . status && data . info === 'OK' ) {
83104 var count = data . pois . length > 10 ? 10 : data . pois . length ;
105+ that . _addStorage ( data ) ;
84106 that . setState ( {
85107 list : data . pois ,
86108 count : count
@@ -110,27 +132,37 @@ var List = React.createClass({
110132 _onEndEditing : function ( ) {
111133 var that = this ;
112134 var keywords = this . state . keywords ;
113-
114135 var url = Util . searchURL + 'key=' + Util . amapKey + '&keywords='
115- + keywords + '&types=' + that . props . type
116- + '&location=121.390686,31.213976&extensions=base' ;
117- console . log ( url ) ;
136+ + keywords + '&types=' + that . props . type + '&extensions=base' ;
118137 that . setState ( {
119138 list : null
120139 } ) ;
121- Util . getJSON ( url , function ( data ) {
122- if ( data . status && data . info === 'OK' && data . pois . length ) {
123- var count = data . pois . length > 10 ? 10 : data . pois . length ;
124- that . setState ( {
125- list : data . pois ,
126- count : count
127- } ) ;
140+ AsyncStorage . getItem ( 'pos' , function ( err , result ) {
141+ if ( _GEO_OPEN ) {
142+ if ( ! err ) {
143+ url += '&location=' + result ;
144+ that . _doGetData ( url ) ;
145+ } else {
146+ alert ( '定位失败' ) ;
147+ }
128148 } else {
129- alert ( '没有查询到相应的数据' ) ;
149+ url += '&location=' + _GEO_TEST_POS ;
150+ that . _doGetData ( url ) ;
130151 }
131152 } ) ;
132153 } ,
133154
155+ //添加到本地存储
156+ _addStorage : function ( data ) {
157+ var posArr = [ ] ;
158+ var len = data . pois . length > 10 ? 10 : data . pois . length ;
159+ for ( var i = 0 ; i < len ; i ++ ) {
160+ posArr . push ( data . pois [ i ] . location ) ;
161+ }
162+ var posStr = posArr . join ( ',' ) ;
163+ AsyncStorage . setItem ( '_' + this . props . type , posStr ) ;
164+ } ,
165+
134166 //拨打电话
135167 _call : function ( tel ) {
136168 if ( tel . length ) {
0 commit comments