Форум программистов, компьютерный форум CyberForum.ru

Библиотека адресов (поиск мест) - Android

Восстановить пароль Регистрация
 
Strelok45
 Аватар для Strelok45
11 / 11 / 0
Регистрация: 18.02.2010
Сообщений: 149
13.08.2014, 11:32     Библиотека адресов (поиск мест) #1
Доброго времени суток.
Заинтересовала библиотека поиска мест от гугла. Вопрос: ее надо как то особенно подключить в манифесте? Как я понял, она входит в состав пакета гугл карт и подключаться должна:
Java
1
<uses-library android:name="com.google.android.maps" />
ссылка на найденный мануал https://developers.google.com/maps/d...ascript/places
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.08.2014, 11:32     Библиотека адресов (поиск мест)
Посмотрите здесь:

Android библиотека
Библиотека Holoeverywhere Android
Android Массив url-адресов для одной кнопки
Библиотека для REST метода Android
Как получить из списка адресов только город? Android
Basic4Android Очень нужна библиотека
Android Библиотека для android-разработчиков
Очень нужна одна библиотека Basic4Android
Библиотека View Injector Android
Библиотека Retrofit Android
Android Семейная библиотека
Android Библиотека для сканера QR-кодов

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Strelok45
 Аватар для Strelok45
11 / 11 / 0
Регистрация: 18.02.2010
Сообщений: 149
16.08.2014, 09:15  [ТС]     Библиотека адресов (поиск мест) #2
Нашел пример кода по созданию запроса в гугл сервис.
Кликните здесь для просмотра всего текста
Java
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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
package com.example.plases;
 
import java.io.ByteArrayInputStream;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.TreeMap;
 
import javax.xml.parsers.DocumentBuilderFactory;
 
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
 
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.util.DisplayMetrics;
import android.widget.ListView;
 
public class MainActivity extends Activity {
    
    private static final double MILE_TO_KM = 1.60934D;
      
      private static final String TAG = "SearchActivity";
      private Handler m_UIHandler = new Handler();
      
      private TreeMap<Double, String> m_dataMap = new TreeMap();
      private String m_distance_unit = "com.example.plases.distance_unit_km";
      private String m_keyword = "";
      private double m_lat = 0.0D;
      private double m_lng = 0.0D;
      
      private Activity m_main = this;
      private HashMap<String, String> m_namePhotoReferenceMap = null;
      private HashMap<String, String> m_nameReferenceMap = null;
      private int m_photoWidth = 0;
      private ProgressDialog m_progressDialog;
      private long m_searchDistance = 0L;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        this.m_nameReferenceMap = new HashMap();
          this.m_namePhotoReferenceMap = new HashMap();
          DisplayMetrics localDisplayMetrics = new DisplayMetrics();
          getWindowManager().getDefaultDisplay().getMetrics(localDisplayMetrics);
          this.m_photoWidth = ((int)(65.0F * localDisplayMetrics.density));
          
          Bundle localBundle = getIntent().getExtras();
          this.m_keyword = localBundle.getString("com.example.plasese.search_keyword");
          this.m_searchDistance = localBundle.getInt("com.example.plases.search_distance");
          this.m_distance_unit = localBundle.getString("com.example.plases.search_distance_unit");
          if (this.m_distance_unit.equals("com.example.plases.distance_unit_miles")) {}
          for (this.m_searchDistance = Math.round(1.60934D * (1000L * this.m_searchDistance));; this.m_searchDistance = (1000L * this.m_searchDistance))
          {
            this.m_progressDialog = new ProgressDialog(this);
            this.m_progressDialog.setMessage("Loading ...");
            this.m_progressDialog.setCancelable(false);
            new SearchLoaderTask(this.m_progressDialog).execute(new Void[0]);
            
            return;
          }
    }
    private class DistanceFinderThread extends Thread{
        
    private String m_distanceUrl = "";
    private String m_name = "";
    private String m_photoUrl = "";
    private String m_rating = "";
    private String m_vicinity = "";
    
    public DistanceFinderThread(String paramString1, String paramString2, String paramString3, String paramString4, String paramString5)
    {
      this.m_name = paramString1;
      this.m_vicinity = paramString2;
      this.m_photoUrl = paramString4;
      this.m_distanceUrl = paramString5;
      this.m_rating = paramString3;
    }
  
    public void run()
    {
      String str1 = this.m_name + "в€љ" + this.m_vicinity + "в€љ" + this.m_photoUrl + "в€љ" + this.m_rating;
      try
      {
        HttpGet localHttpGet = new HttpGet(this.m_distanceUrl);
        String str2 = EntityUtils.toString(new DefaultHttpClient().execute(localHttpGet).getEntity());
        NodeList localNodeList = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new InputSource(new ByteArrayInputStream(str2.getBytes("UTF-8")))).getElementsByTagName("distance");
        if (localNodeList.getLength() > 0)
        {
          double d = Double.parseDouble(((Element)((Element)localNodeList.item(0)).getElementsByTagName("text").item(0)).getTextContent().replaceAll("km", "").trim()) + Math.random() / 100.0D;
          synchronized (MainActivity.this.m_dataMap)
          {
            MainActivity.this.m_dataMap.put(Double.valueOf(d), str1);
            return;
          }
        }
        return;
      }
      catch (Exception localException)
      {
        localException.printStackTrace();
      }
    }
    }
    private class SearchLoaderTask extends AsyncTask<Void, Void, Void>
      {
        private ProgressDialog dialog = null;
        
        public SearchLoaderTask(ProgressDialog paramProgressDialog)
        {
          this.dialog = paramProgressDialog;
        }
        
        protected Void doInBackground(Void... paramVarArgs)
        {
          for (;;)
          {
            
              
              MainActivity.this.m_lat = 43.128158;
              MainActivity.this.m_lng = 131.901887;
            
              String str1;
              HttpGet localHttpGet;
              String str2;
              NodeList localNodeList1;
              ArrayList localArrayList1;
              int i;
              int j;
              int k;
              int m;
              Iterator localIterator;
              ArrayList localArrayList2;
              Handler localHandler;
              SearchDataHandler localSearchDataHandler;
              
              break label1127;
              
              
              Element localElement = (Element)localNodeList1.item(i);
              String str3 = "";
              if (localElement.getElementsByTagName("name").getLength() <= 0) {
                continue;
              }
              str3 = ((Element)localElement.getElementsByTagName("name").item(0)).getTextContent();
              String str4 = "";
              if (localElement.getElementsByTagName("vicinity").getLength() <= 0) {
                continue;
              }
              str4 = ((Element)localElement.getElementsByTagName("vicinity").item(0)).getTextContent();
              if (localElement.getElementsByTagName("reference").getLength() <= 0) {
                continue;
              }
              String str11 = ((Element)localElement.getElementsByTagName("reference").item(0)).getTextContent();
              MainActivity.this.m_nameReferenceMap.put(str3, str11);
              NodeList localNodeList2 = localElement.getElementsByTagName("rating");
              String str5 = " ";
              if (localNodeList2.getLength() <= 0) {
                continue;
              }
              str5 = ((Element)localNodeList2.item(0)).getTextContent();
              NodeList localNodeList3 = localElement.getElementsByTagName("photo");
              if (localNodeList3.getLength() <= 0) {
                continue;
              }
              String str10 = ((Element)((Element)localNodeList3.item(0)).getElementsByTagName("photo_reference").item(0)).getTextContent();
              String str6 = "https://maps.googleapis.com/maps/api/place/photo?maxwidth=" + MainActivity.this.m_photoWidth + "&photoreference=" + str10 + "&sensor=false&key=" + "AIzaSyDLumcaTZbAcaitpV5_oRfMMReGoah68sw";
              MainActivity.this.m_namePhotoReferenceMap.put(str3, str10);
              String str7 = "";
              String str8 = "";
              if (localElement.getElementsByTagName("lat").getLength() <= 0) {
                continue;
              }
              str7 = ((Element)localElement.getElementsByTagName("lat").item(0)).getTextContent();
              if (localElement.getElementsByTagName("lng").getLength() <= 0) {
                continue;
              }
              str8 = ((Element)localElement.getElementsByTagName("lng").item(0)).getTextContent();
              String str9 = "http://maps.googleapis.com/maps/api/distancematrix/xml?origins=" + MainActivity.this.m_lat + "," + MainActivity.this.m_lng + "&destinations=" + str7 + "," + str8 + "&sensor=false";
              MainActivity.DistanceFinderThread localDistanceFinderThread = new MainActivity.DistanceFinderThread(str3, str4, str5, str6, str9);
              localArrayList1.add(localDistanceFinderThread);
              localDistanceFinderThread.start();
              i++;
              continue;
              str6 = ((Element)localElement.getElementsByTagName("icon").item(0)).getTextContent();
              MainActivity.this.m_namePhotoReferenceMap.put(str3, "icon");
              continue;
              ((Thread)localArrayList1.get(k)).join();
              k++;
              continue;
              localArrayList2.add((Double)localIterator.next());
              continue;
            
            MainActivity.this.m_keyword = URLEncoder.encode(MainActivity.this.m_keyword, "UTF-8");
            if ((MainActivity.this.m_keyword == null) || (MainActivity.this.m_keyword.length() <= 0)) {
              break label1127;
            }
            str1 = "https://maps.googleapis.com/maps/api/place/nearbysearch/xml?location=" + MainActivity.this.m_lat + "," + MainActivity.this.m_lng + "&radius=" + MainActivity.this.m_searchDistance + "&keyword=" + MainActivity.this.m_keyword + "&sensor=false&key=" + "AIzaSyDLumcaTZbAcaitpV5_oRfMMReGoah68sw";
            localHttpGet = new HttpGet(str1);
            str2 = EntityUtils.toString(new DefaultHttpClient().execute(localHttpGet).getEntity());
            localNodeList1 = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new InputSource(new ByteArrayInputStream(str2.getBytes("UTF-8")))).getElementsByTagName("result");
            new ArrayList();
            localArrayList1 = new ArrayList();
            MainActivity.this.m_dataMap = new TreeMap();
            i = 0;
            j = localNodeList1.getLength();
            if (i < j) {
              continue;
            }
            k = 0;
            m = localArrayList1.size();
            if (k < m) {
              continue;
            }
            localIterator = MainActivity.this.m_dataMap.keySet().iterator();
            localArrayList2 = new ArrayList();
            if (localIterator.hasNext()) {
              continue;
            }
            localHandler = MainActivity.this.m_UIHandler;
            localSearchDataHandler = new SearchDataHandler(localArrayList2, MainActivity.this.m_dataMap);
            localHandler.post(localSearchDataHandler);
            break label1127;
            Thread.sleep(50L);
          }
          label1127:
          return null;
        }
        
        public void onPostExecute(Void paramVoid)
        {
          this.dialog.dismiss();
        }
        
        public void onPreExecute()
        {
          this.dialog.show();
        }
        
        class SearchDataHandler implements Runnable
        {
          TreeMap<Double, String> m_dataMap = null;
          ArrayList<Double> m_keyList = null;
          
          public SearchDataHandler(TreeMap<Double, String> paramTreeMap)
          {
            this.m_keyList = paramTreeMap;
            Object localObject;
            this.m_dataMap = localObject;
          }
          
          public void run()
          {
            ListView localListView = (ListView)MainActivity.this.findViewById(R.id.searchListView);
            localListView.setEmptyView(MainActivity.this.findViewById(R.id.emptyView));
            localListView.setAdapter(new SearchAdapter(MainActivity.this.m_main, this.m_keyList, this.m_dataMap));
            
          }
        }
      }
}

хочу пока разобраться в сервисе и ввести статичные координаты и получить ответ от гугл.
в примере возникает ошибка на вызов SearchDataHandler, никак не пойму почему, может кто подскажет?
Yandex
Объявления
16.08.2014, 09:15     Библиотека адресов (поиск мест)
Ответ Создать тему
Опции темы

Текущее время: 04:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru