0

Google Places APIを使用しているAndroid アプリを開発しています。すべての場所の結果を取得したら、アルゴリズムに従って並べ替えたいと思います。つまり、アルゴリズムが >= 0の場合にのみ結果が入れられます。Hash Map

私のアルゴリズムは次のとおり balance = user_hour-visi-durationです。 balance = 240-60-20 = 160

残高が 160 だとしましょう。for ループが終了するまで 160 のままです。ループのたびに、バランスの値が負の値まで減少するようにしたかったのです。参考までに、バランス変数はローカル変数ではありません。

これを解決する方法を知っている人はいますか?これがコードの一部です。

// loop through each place
                        for (Place p : nearPlaces.results) {
                            balance = user_hour - duration - visit;
                            HashMap<String, String> map = new HashMap<String, String>();

                            //////////////////////////////////////////////////////////////////
                            googlePlaces = new GooglePlaces();
                            try {
                                placeDetails = googlePlaces.getPlaceDetails(p.reference);

                            } catch (Exception e) {
                                e.printStackTrace();
                            }

                            if(placeDetails != null){

                                String statuss = placeDetails.status;

                                // check place deatils status
                                // Check for all possible status
                                if(statuss.equals("OK")){




                                        lat = gps.getLatitude();
                                        lang = gps.getLongitude();
                                        double endlat = placeDetails.result.geometry.location.lat;
                                        double endlong = placeDetails.result.geometry.location.lng;



                                        Location locationA = new Location("point A");
                                        locationA.setLatitude(lat);
                                        locationA.setLongitude(lang);
                                        Location locationB = new Location("point B");
                                        locationB.setLatitude(endlat);
                                        locationB.setLongitude(endlong);
                                        double distance = locationA.distanceTo(locationB)/1000;
                                        Double dist = distance;
                                        Integer dist2 = dist.intValue();
                                        //p.distance = String.valueOf(dist2);
                                        p.distance = String.valueOf(balance);
                                        dist3 = p.distance;





                                }
                                else if(status.equals("ZERO_RESULTS")){
                                    alert.showAlertDialog(MainActivity.this, "Near Places",
                                            "Sorry no place found.",
                                            false);
                                }
                                }

                                ///////////////////////////////////////////////////////////////



                            if (balance > 0){

                                // Place reference won't display in listview - it will be hidden
                                // Place reference is used to get "place full details"
                                map.put(KEY_REFERENCE, p.reference);
                                // Place name
                                map.put(KEY_NAME, p.name);
                                map.put(KEY_DISTANCE, p.distance);
                                // adding HashMap to ArrayList
                                placesListItems.add(map);


                                }

                            else {
                                //

                            }


                        }//end for loop
4

1 に答える 1

0

ここで正確に何をしようとしていますか?

balance = user_hour - duration - visit;forループの後の最初の行にあります。user_hourdurationまたはvisitが宣言されている場所はわかりませんが、ループの外側にあると思います。これは、のそれぞれに対して常に同じ値になることを意味しPlaceますnearPlaces.results。このコードが本当に希望どおりの場合は、ループの前に宣言することをお勧めします。これは、ごとに無意味に再計算するためPlaceです。

また、印刷するか、別の値を設定する以外は何もしないbalanceので、予想されることを理解するのは難しいです。

于 2013-02-27T08:43:09.257 に答える