在android上不使用地图对象的closures地点列表

我正在做一个Android应用程序,需要检查用户是否靠近感兴趣的地方,如电影院。 (1公里内)

不过,我不需要用户看到一个我认为需要使用谷歌API的地图。 我已经做了一些研究,但不知道如何在Android上完成这一点。 任何提示(包括意见或相关链接将不胜感激)

Solutions Collecting From Web of "在android上不使用地图对象的closures地点列表"

看附近的网站,

1.-使用谷歌地图Nearby Search Requests , 链接在这里

2.-使用电话坐标,获得电影院附近的电影院列表…

https://maps.googleapis.com/maps/api/place/radarsearch/json?location=51.503186,-0.126446&radius=5000&types=movie+theater&key=YOUR_API_KEY

3.比较两个坐标,做你的魔法,也许得到这两点的距离,并显示用户的距离..

注意:如果你想要很多特殊的地方,你需要看另一种方式来做到这一点。 这就是我以为…在你的服务器需要通过与很多最近的地方,(博物馆,电影院等)coords请求,并保存,因为谷歌收费时,服务器检查多次,当用户发送协同时,你将有一个最近的地方的名单,如果没有,咨询最好的履行清单,并保存在您的服务器,并发送给用户,

你将需要使用一些计算coordenates,如范围,如果用户在这个coordenates我有数据库发送信息,如果没有,请求服务器咨询最近的地方(与您的预定义名单)

对不起我的英语不好。

链接了解更多信息
使用Google Places API-Android App在Google地图中查找附近的地点
地方API和相关产品
如何在Android谷歌地图显示附近的地方像atm,医院?

如果我正确理解你的问题,你正在寻找GeoFences。 在这里看看更多的细节: https : //developer.android.com/training/location/geofencing.html

试试这个来获取地点,input你自己的search查询

 searchString = getIntent().getStringExtra("search_key"); GetPlacesTask getPlacesTask = new GetPlacesTask(); String url = getResources().getString(R.string.near_by_search) + "location="+latitude+","+longitude+"&radius=1000&type=" + searchString +"&keyword="+ searchString + "&key="+ YOUR_API_KEY; String[] stringArray = new String[]{url}; getPlacesTask.execute(stringArray); 

GetPlacesTask

 private class GetPlacesTask extends AsyncTask<String, String, ArrayList<Place>> { @Override protected void onPreExecute() { super.onPreExecute(); } @Override protected ArrayList<Place> doInBackground(String... strings) { try { URL url = new URL(strings[0]); HttpHandler httpHandler = new HttpHandler(url); String result = httpHandler.getURLResponse(); ArrayList<Place> placesArrayList = new ArrayList<>(); JSONObject mainResponse; JSONArray jsonArray; mainResponse = new JSONObject(jsonString); jsonArray = mainResponse.getJSONArray("results"); if(jsonArray.length() > 0) { placesArrayList = fetch(jsonArray); } } catch(Exception e) { e.printStackTrace(); } return placesArrayList; } @Override protected void onPostExecute(ArrayList<Place> placesArrayList) { super.onPostExecute(placesArrayList); if(!placesArrayList.isEmpty()) { //Show Places in your views } } } 

HttpHandler类

  public class HttpHandler { private URL url; public HttpHandler(URL url) { this.url = url; } public String getURLResponse() { String response = ""; try { HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setRequestMethod("GET"); InputStream is = new BufferedInputStream(urlConnection.getInputStream()); response = convertStreamIntoString(is); Log.d("RESPONSE", response); } catch (Exception e) { e.printStackTrace(); } return response; } private String convertStreamIntoString(InputStream inputStream) { String response = ""; String line; try { BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); StringBuilder sb = new StringBuilder(); while ((line = reader.readLine()) != null) { sb.append(line); } response = sb.toString(); } catch (Exception e) { e.printStackTrace(); } return response; } } 

这里是相同的存储库

您也可以在附近的地方使用Awareness Api。 你只需要创build如下的GoogleApiClient对象,

 GoogleApiClient mGoogleApiClient = new GoogleApiClient.Builder(this) .addApi(Awareness.API) .addConnectionCallbacks(this) .build(); mGoogleApiClient.connect(); 

然后调用下面的方法为附近的地方。

 private void detectNearbyPlaces() { if (!checkLocationPermission()) { return; } Awareness.SnapshotApi.getPlaces(mGoogleApiClient) .setResultCallback(new ResultCallback<PlacesResult>() { @Override public void onResult(@NonNull PlacesResult placesResult) { Place place; if (placesResult.getPlaceLikelihoods() != null) { for (PlaceLikelihood placeLikelihood : placesResult.getPlaceLikelihoods()) { place = placeLikelihood.getPlace(); Log.e(TAG, place.getName().toString() + "\n" + place.getAddress().toString()); Log.e(TAG, "Rating: " + place.getRating()); Log.e(TAG, "Likelihood that the user is here: " + placeLikelihood.getLikelihood() * 100 + "%"); } } } }); } 

希望这对你有帮助。