gpt4 book ai didi

android - Google Places Api 按距离排序

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:34:46 24 4
gpt4 key购买 nike

目前正在开发一个 Android 应用程序,它返回距离用户当前位置最近的 20 个位置。

Google Places API 返回接近用户位置的约 20 个地点,但不是按距离排序的最近 20 个地点。

查看 Google Places API Documentation没有显示任何我认为不正确的内容。

GetPlaces.java

String types = "accounting|airport|amusement_park|aquarium|art_gallery|atm|bakery|bank|bar|beauty_salon|bicycle_store|book_store|bowling_alley|bus_station|cafe|campground|car_dealer|car_rental|car_repair|car_wash|casino|cemetery|church|city_hall|clothing_store|convenience_store|courthouse|dentist|department_store|doctor|electrician|electronics_store|embassy|establishment|finance|fire_station|florist|food|funeral_home|furniture_store|gas_station|general_contractor|grocery_or_supermarket|gym|hair_care|hardware_store|health|hindu_temple|home_goods_store|hospital|insurance_agency|jewelry_store|laundry|lawyer|library|liquor_store|local_government_office|locksmith|lodging|meal_delivery|meal_takeaway|mosque|movie_rental|movie_theater|moving_company|museum|night_club|painter|park|parking|pet_store|pharmacy|physiotherapist|place_of_worship|plumber|police|post_office|real_estate_agency|restaurant|roofing_contractor|rv_park|school|shoe_store|shopping_mall|spa|stadium|storage|store|subway_station|synagogue|taxi_stand|train_station|travel_agency|university|veterinary_care|zoo";
resourceURI = "https://maps.googleapis.com/maps/api/place/nearbysearch/json?location="+myLocation.latitude+","+myLocation.longitude+"&radius=500&rankBy=distance&types="+ URLEncoder.encode(types, "UTF-8")+"&sensor=true&key=GOOGLE_MAPS_KEY";
try {
String url =resourceURI; //getURL(myLocation.latitude,myLocation.longitude);

HttpParams httpParams = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParams, 30000);
HttpConnectionParams.setSoTimeout(httpParams, 30000);
DefaultHttpClient httpClient = new DefaultHttpClient(httpParams);
HttpGet httpGet = new HttpGet(url);
httpGet.setHeader("Content-type", "application/json");
ResponseHandler responseHandler = new BasicResponseHandler();
String response = (String) httpClient.execute(httpGet, responseHandler);

if (response != null) {
mResult = new JSONObject(response);
results = mResult.getJSONArray("results");
}
}
catch (ClientProtocolException e) {
e.printStackTrace();
return null;
}
catch (IOException e) {
e.printStackTrace();
return null;
}
catch (JSONException e) {
e.printStackTrace();
return null;
}

return results;
}

这会返回有效的 JSON,但不会返回距离传入的距离 最近的位置。我知道有比请求返回的更近的地方。

例如,我在一个已知的 google 地点发出请求,但它没有显示我当前所在的地点,而是显示更远的其他地点。

最佳答案

也许你已经解决了你的问题,但我希望这可以帮助(关注粗体部分):

radius - 定义返回地点结果的距离(以米为单位)。最大允许半径为 50 000 米。 请注意,如果指定了 rankby = distance(在下面可选参数下描述),则不得包含半径。

rankby — 指定列出结果的顺序。可能的值是:

突出(默认)。此选项根据结果的重要性对结果进行排序。排名将有利于指定区域内的显着位置。地方在 Google 索引中的排名、您的应用程序的签到次数、全局知名度和其他因素会影响知名度。

距离。此选项按结果与指定位置的距离升序对结果进行排序。指定距离时,需要一个或多个关键字、名称或类型。

根据:https://developers.google.com/places/documentation/search?hl=en

根据谷歌文档,我了解到您不能同时发送参数“rankby”和“radius”,您必须同时仅使用其中一个,这样您将获得按距离排序的结果。

测试请求这样做:

resourceURI = "https://maps.googleapis.com/maps/api/place/nearbysearch/json?
location="+myLocation.latitude+","+myLocation.longitude+"&rankBy=distance
&types="+ URLEncoder.encode (types, "UTF-8") + "&sensor = true&
key = GOOGLE_MAPS_KEY";

看你做的如何,祝你好运!

关于android - Google Places Api 按距离排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22726446/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com