Мое приложение запускается и показывает местоположение моего устройства на карте.Затем одним нажатием кнопки он должен показать все рестораны рядом с моим устройством.
Однако он показывает синий экран с красным маркером в центре.Я проверил решение и вижу две потенциальные проблемы: либо мои координаты широты и долготы, либо мой ключ Api.Я считаю, что его недостающие координаты, и мне нужно несколько указаний о том, как решить.Мои причины ниже
Я проверил мой ключ API и не верю, что это проблема, потому что в моем файле журнала URL-адресов mapsActivity, когда я нажимаю на URL, я получаю все детали URL в своем просмотре, показывая все HTMLрезультаты атрибуции, и когда я изменяю ключ API в своем коде, я получаю сообщение об отказе в доступе, которое показывает действительность моего оригинального ключа API.Однако в html_attributions я заметил, что координаты местоположения читаются как 0.0, 0.0, поэтому, вероятно, моя карта показывает середину моря.
это мой URL-адрес Json, показывающий отсутствующие кординаты
https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=0.0,0.0&radius=10000&type=resturant&sensor=true&key=AIzaSyCfLPGUTOcDDTYVrgdjzYuAut60-dWhdQQ
, когда я проверяю кнопку поиска ресторанов, это код, который она запускает
button = (Button)view.findViewById(R.id.showresturants);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mMap.clear();
String resturant = "resturant";
String url =getUrl(latitude, longitude, resturant);
Object dataTransfer[] = new Object[2];
dataTransfer[0] = mMap;
dataTransfer[1] = url;
GetNearbyPlacesData getNearbyPlacesData = new GetNearbyPlacesData();
getNearbyPlacesData.execute(dataTransfer);
Toast.makeText(getActivity(), "...Showing Nearby Resturants", Toast.LENGTH_SHORT).show();
}
});
мой метод getURL
private String getUrl(double latitude, double longitude, String nearbyPlace) {
StringBuilder googlePlaceUrl = new StringBuilder("https://maps.googleapis.com/maps/api/place/nearbysearch/json?");
googlePlaceUrl.append("location="+latitude+","+longitude);
googlePlaceUrl.append("&radius="+PROXIMITY_RADIUS);
googlePlaceUrl.append("&type="+nearbyPlace);
googlePlaceUrl.append("&sensor=true");
googlePlaceUrl.append("&key="+"AIzaSyCfLPGUTOcDDTYVrgdjzYuAut60-dWhdQQ");
Log.d("MapsActivity", "url = "+googlePlaceUrl.toString());
return googlePlaceUrl.toString();
}
, а мой класс getNearbyPlaceData ниже
public class GetNearbyPlacesData extends AsyncTask<Object, String, String> {
String googlePlacesData;
GoogleMap mMap;
String url;
@Override
protected String doInBackground(Object... objects) {
mMap = (GoogleMap)objects[0];
url = (String)objects[1];
DownLoadURL downLoadURL = new DownLoadURL();
try {
googlePlacesData = downLoadURL.readUrl(url);
} catch (IOException e) {
e.printStackTrace();
}
return googlePlacesData;
}
@Override
protected void onPostExecute(String s) {
List<HashMap<String, String>>nearbyPlaceList = null;
DataPaser paser = new DataPaser();
nearbyPlaceList = paser.parse(s);
showNearByPlaces(nearbyPlaceList);
}
private void showNearByPlaces(List<HashMap<String,String>> nearbyPlaceList)
{
for (int i = 0;i<nearbyPlaceList.size(); i++)
{
MarkerOptions markerOptions = new MarkerOptions();
HashMap<String, String>googlePlace = nearbyPlaceList.get(i);
String placeName = googlePlace.get("place_name");
String vicinity = googlePlace.get("vicinity");
double lat = Double.parseDouble(googlePlace.get("lat"));
double lng = Double.parseDouble(googlePlace.get("lng"));
LatLng latLng = new LatLng(lat, lng);
markerOptions.position(latLng);
markerOptions.title(placeName +" : "+ vicinity);
markerOptions.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED));
mMap.addMarker(markerOptions);
mMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));
mMap.animateCamera(CameraUpdateFactory.zoomTo(15));
}
}