Карты, показывающие синий экран, когда я показываю все рестораны рядом с устройством - PullRequest
0 голосов
/ 07 мая 2019

Мое приложение запускается и показывает местоположение моего устройства на карте.Затем одним нажатием кнопки он должен показать все рестораны рядом с моим устройством.

Однако он показывает синий экран с красным маркером в центре.Я проверил решение и вижу две потенциальные проблемы: либо мои координаты широты и долготы, либо мой ключ 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));



        }
    }
...