私はユーザーの周りの近くの場所をフィルタリングしています。私はユーザーの周りのすべてのマーカー/場所のplace_idを取得したいと思います。すべてのマーカーに対して1つのplace_idしかありません
ただし、すべてのマーカー/場所に対して1つのplace_idしか表示されません。 logcatは別のplace_idを表示しますが、アプリケーションは1つだけのスニペットですplace_id。
詳細を理解するには、サンプルビデオ:https://www.youtube.com/watch?v=-0pmjblb_G8を投稿しました。
ご覧のとおり、マーカー/場所をクリックしようとするたびに、他のマーカー/場所と同じplace_idが表示されます。
私は、説明のために他の必要なコードを掲載することができます。
UPDATE:追加情報:
私は静的な文字列のplaceIdとしてplaceIdを作りました。私は、各マーカー/場所のplaceIdを見ることができるように はその後、私はMainActivity
public boolean onMarkerClick(Marker marker) {
Toast.makeText(traffic.this, " " + GetNearbyPlacesData.placeId, Toast.LENGTH_SHORT).show();
return true;
}
にこれを追加しました。
UPDATE:追加情報:
public class GetNearbyPlacesData extends AsyncTask<Object, String, String> {
String googlePlacesData;
GoogleMap mMap;
String url;
static String placeID = "";
@Override
protected String doInBackground(Object... params) {
try {
Log.d("GetNearbyPlacesData", "doInBackground entered");
mMap = (GoogleMap) params[0];
url = (String) params[1];
DownloadUrl downloadUrl = new DownloadUrl();
googlePlacesData = downloadUrl.readUrl(url);
Log.d("GooglePlacesReadTask", "doInBackground Exit");
} catch (Exception e) {
Log.d("GooglePlacesReadTask", e.toString());
}
return googlePlacesData;
}
@Override
protected void onPostExecute(String result) {
Log.d("GooglePlacesReadTask", "onPostExecute Entered");
List<HashMap<String, String>> nearbyPlacesList = null;
DataParser dataParser = new DataParser();
nearbyPlacesList = dataParser.parse(result);
ShowNearbyPlaces(nearbyPlacesList, result);
Log.d("GooglePlacesReadTask", "onPostExecute Exit");
}
private void ShowNearbyPlaces(List<HashMap<String, String>> nearbyPlacesList, String result) {
for (int i = 0; i < nearbyPlacesList.size(); i++) {
Log.d("onPostExecute", "Entered into showing locations");
MarkerOptions markerOptions = new MarkerOptions();
HashMap<String, String> googlePlace = nearbyPlacesList.get(i);
double lat = Double.parseDouble(googlePlace.get("lat"));
double lng = Double.parseDouble(googlePlace.get("lng"));
String placeName = googlePlace.get("place_name");
String vicinity = googlePlace.get("vicinity");
try {
JSONObject jsonObject = new JSONObject(result);
//CHECK IF i IS CHANGING HERE
//CHECK IF RESULTS AND PLACE ID ARE CHANGING WITH DEBUGGER
placeID = jsonObject.getJSONArray("results").getJSONObject(i).getString("place_id");
Log.d("onPostExecute", placeID);
LatLng latLng = new LatLng(lat, lng);
markerOptions.position(latLng);
Marker m = mMap.addMarker(new MarkerOptions()
.position(latLng)
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE))
.snippet("placeId:" + placeID)
.title("placeId:" + placeID));
m.showInfoWindow();
mMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));
mMap.animateCamera(CameraUpdateFactory.zoomTo(11));
} catch (Exception e) {
}
// markerOptions.title(placeName + " : " + vicinity);
//move map camera
}
}
}
私はこれを試してみましたが、各マーカーのplace_idは常に同じです。つまり、私は次のようなマーカーにスニペットを入れます:markerOptions.icon(BitmapDescriptorFactory.fromResource(R.drawable.travel_agency))。snippet( "placeId:" + placeID);毎回地図のマーカーをクリックするたびに、そのマーカー/場所では表示されていないplace_idが表示され、間違った場所のplace_idが表示されます。 – AndroidProgrammerThatWantsMe
私はonMarkerClickを使用しています。私はplace_idを乾杯します。私はマップ内のすべてのマーカーをクリックしようとしましたが、トーストは同じplace_idを何度も繰り返し表示し続けます。 – AndroidProgrammerThatWantsMe
https://www.youtube.com/watch?v=-0pmjblb_G8 – AndroidProgrammerThatWantsMe