Он является картой но не marker специфической дорожки

Оказывается, что я делаю приложение времени и в одном три tabs, что у меня есть, мне нужно, чтобы она явилась картой с закладкой и infowindow с настоящим предсказанием, случай состоит в том, что я добиваюсь того, чтобы он явился картой но не infowindow с предсказанием, другой фактор, который было нужно иметь в виду, состоит в том, что камера остается установленной и не двигается, также не делает масштаб, что видно с дальше вверх. Я надеюсь, что они могут помогать мне, спасибо.

Мой fragment карты:

public class GoogleMapsFragment extends Fragment implements OnMapReadyCallback {
    //Ciudad, longitud y latitud
    String city;
    Double lat, lon;
    //Para el marcador
    Marker marker;
    //Instanciando los mapas
    private MapView mapView;
    private GoogleMap map;

    //Como hemos hecho en otras clases,
    //Esto va a servir para recoger la información
    //de googlePlaces
    ResultsList resultsList = null;

    public GoogleMapsFragment() {

    }


    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_google_maps, container, false);

        mapView = (MapView) view.findViewById(R.id.google_maps);
        mapView.onCreate(savedInstanceState);
        mapView.onResume();
        MapsInitializer.initialize(getActivity().getApplicationContext());
        mapView.getMapAsync(this);
        return view;
    }


    @Override
    public void onMapReady(GoogleMap googleMap) {
        map = googleMap;


    }


    /*Metodo para mostrar el infowindow*/
    public void mostrarInfowindows(final MainPrediction mainPredictionCurrent) {
        map.setInfoWindowAdapter(new GoogleMap.InfoWindowAdapter() {
            @Override
            public View getInfoWindow(Marker marker) {
                return null;
            }

            @Override
            public View getInfoContents(Marker marker) {
                View view = getLayoutInflater(null).inflate(R.layout.map_infowindow, null);
                //Rescatando elementos del Layout
                ImageView imageViewFavourite = (ImageView) view.findViewById(R.id.imageView_prefer_place);
                TextView textViewCiudad = (TextView) view.findViewById(R.id.textView_ciudad);
                ImageView imageViewEstadoDia = (ImageView) view.findViewById(R.id.imageview_estado_dia);
                TextView textViewEstadoDia = (TextView) view.findViewById(R.id.textView_estado_dia);
                TextView textViewTemperatura = (TextView) view.findViewById(R.id.textView_temperatura);
                TextView textViewviento = (TextView) view.findViewById(R.id.textView_wind);
                // TextView textViewPrecipitaciones = (TextView) view.findViewById(R.id.textView_precipitaciones);

                //Mi duda aquí es, ¿Y si el nombre ya está guardado?,
                // ¿Cómo sería la implementación del código en este caso?

                imageViewEstadoDia.setImageResource(mainPredictionCurrent.getWeather().get(0).getCustomIcons());
                textViewEstadoDia.setText(mainPredictionCurrent.getWeather().get(0).getDescription());
                textViewTemperatura.setText(mainPredictionCurrent.getMain().getTemp() + " º");
                textViewviento.setText(mainPredictionCurrent.getWind().getSpeed() + " m/s");

                /*OJO! Recordar buscar la forma de incluir las precipitaciones*/
                //Predictions predictions = new Predictions();

                //  textViewPrecipitaciones.setText(predictions.getRain().get3h().toString());

                textViewCiudad.setText(mainPredictionCurrent.getName());
                //guardamos el nombre en el atributo
                city = mainPredictionCurrent.getName();


                //Si la ciudad es una ciudad favorita, vamos a dibujar el corazón lleno o vacío,
                //para ello:
                if (!isFavourite(city)) {
                    imageViewFavourite.setImageResource(R.drawable.ic_like);
                } else {
                    imageViewFavourite.setImageResource(R.drawable.ic_full_heart);
                }


                return view;
            }
        });
    }

    public boolean isFavourite(String city) {
        SharedPreferences sharedPreferences = getActivity().getPreferences(Context.MODE_PRIVATE);

        String favouriteCity = sharedPreferences.getString(Constantes.KEY_FAVOURITE_CITY, "");

        if (!favouriteCity.equals(city)) {
            return false;
        } else {
            return true;
        }
    }

    /*Guardando en las preferencias la ciudad con su latitud y longitud favorita*/
    public void saveFavouritecity(String city, String latitude, String longitude){
        /*El marcador para actualizar el infowindow*/
        marker.showInfoWindow();

        /*las preferencias*/
        SharedPreferences sharedPreferences = getActivity().getPreferences(Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = sharedPreferences.edit();

        editor.putString(Constantes.KEY_FAVOURITE_CITY,city);
        editor.putString(Constantes.KEY_FAVOURITE_LAT,latitude);
        editor.putString(Constantes.KEY_FAVOURITE_LON,longitude);

        editor.commit();


    }


    /*
    Este método es para que se muestre en el
    infowindows la información meteorológica,
    a este mismo método le vamos a pasar la latitud y la longitud
    correspondiente, este método será llamado en el retrofit de un método creado
    más abajo
     */
    public void getLatAndLonFromOpenWeather(double latitud, double longitud) {
        Retrofit retrofit = ((AutocompleteApp) getActivity().getApplication()).getRetrofitOpenWeather();

        final IOpenWeatherApi service = retrofit.create(IOpenWeatherApi.class);

        final Call<MainPrediction> call = service.getPronosticoActual(String.valueOf(latitud), String.valueOf(longitud));

        call.enqueue(new Callback<MainPrediction>() {
            @Override
            public void onResponse(Response<MainPrediction> response, Retrofit retrofit) {
                if (response.isSuccess()) {
                    //Le pasamos al método la predicción actual
                    MainPrediction mainPredictionCurrent = response.body();
                    mostrarInfowindows(mainPredictionCurrent);
                    //Para mostrar siempre el infowindow
                    marker.showInfoWindow();
                } else {
                    Toast.makeText(getActivity(), "¡Error!", Toast.LENGTH_SHORT).show();
                }
            }

            @Override
            public void onFailure(Throwable t) {
                Toast.makeText(getActivity(), "¡Error!", Toast.LENGTH_SHORT).show();
            }
        });
    }


    /*
    Con este método vamos a hacer una consulta a los sitios de Google
    para que así nos devuelva la latitud y la longitud correspondientes (OJO, openweather no
    nos dará esta información y por tanto la llamada a Retrofit será al api de Google)
     */
    public void getLatAndLonFromGPlaces(final double latitud, final double longitud) {

        lat = latitud;
        lon = longitud;

        Retrofit retrofit = ((AutocompleteApp) getActivity().getApplication()).getRetrofitGoogle();

        final IGoogleRegionsApi service = retrofit.create(IGoogleRegionsApi.class);

        final Call<ResultsList> call = service.getNearbyPlaces(latitud + " , " + longitud);

        call.enqueue(new Callback<ResultsList>() {
            @Override
            public void onResponse(Response<ResultsList> response, Retrofit retrofit) {
                if (response.isSuccess()) {
                    resultsList = response.body();

                    //Aquí llamamos al método que realiza la consulta para
                    //mostrar la info meteorológica y le pasamos la latitud y la longitud
                    resultsList = response.body();
                    getLatAndLonFromGPlaces(latitud,longitud);


                } else {
                    Toast.makeText(getActivity(), "¡Error!", Toast.LENGTH_SHORT).show();
                }
            }

            @Override
            public void onFailure(Throwable t) {
                Toast.makeText(getActivity(), "¡Error!", Toast.LENGTH_SHORT).show();
            }
        });


    }


}
0
задан 06.01.2017, 03:37
0 ответов

Он не появляется у тебя, потому что когда бы то ни было ты это добавляешь к карте, это пробует:

Marker marker = map.addMarker(new MarkerOptions()
   .position(new LatLng(37.7750, 122.4183))
   .title("San Francisco")
   .snippet("Population: 776733"));
2
ответ дан 03.12.2019, 17:51