Google Maps: Get data from a bookmark and send it to an activity

0

My problem is as follows, I have a map in which there are several markers, which show two data that they collect from a database, what I want to do is to press a marker to show an activity with the marker data, but when I press a marker, it sends me the information of another one.

this code I have:

public class obtenercoordenadas extends FragmentActivity implements  OnMapReadyCallback {

private GoogleMap googleMap;
private HashMap<Marker, Integer> idmarker = new HashMap<>();

private String name;
private String name1;
private String name2;
private String name3;
private String name4;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.fm_buscarestacionamientos);

    SupportMapFragment mapFragment = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.googleMap));
    mapFragment.getMapAsync(this);

    if (android.os.Build.VERSION.SDK_INT > 9) {
        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
        StrictMode.setThreadPolicy(policy);
    }}

public void onMapReady(GoogleMap googleMap){
    ArrayList<HashMap<String, String>> location = null;
    String url = "http://www.transportessalgado.cl/obtenercoordenadas.php";
    try {

        JSONArray data = new JSONArray(getHttpGet(url));

        location = new ArrayList<HashMap<String, String>>();
        HashMap<String, String> map;

        for (int i = 0; i < data.length(); i++) {
            JSONObject tienda = data.getJSONObject(i);

            map = new HashMap<String, String>();
            map.put("usuario_rut_administrador",tienda.getString("usuario_rut_administrador"));
            map.put("nombre_estacionamiento", tienda.getString("nombre_estacionamiento"));
            map.put("latitud", tienda.getString("latitud"));
            map.put("longitud", tienda.getString("longitud"));
            map.put("cantidad_cupos", tienda.getString("cantidad_cupos"));
            Log.e("lo que recibe el mapa", String.valueOf(map));
            location.add(map);
        }
    } catch (JSONException e) {
        e.printStackTrace();
    }
    // *** Display Google Map


        assert location != null;
        Double latitude = Double.parseDouble(location.get(0).get("latitud"));
        Double longitude = Double.parseDouble(location.get(0).get("longitud"));
        //String idddd= String.valueOf(location.get(0).get("usuario_rut_administrador"));

        LatLng coordinate = new LatLng(latitude, longitude);
        googleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {

            return;
        }
        googleMap.setMyLocationEnabled(true);

        googleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(coordinate, 24));
        if (ActivityCompat.checkSelfPermission(getApplicationContext(),
                Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED
                && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION)
                != PackageManager.PERMISSION_GRANTED) {
            return;
        }

        // *** Marker (Loop)
        Marker markers = null;
        for (int i = 0; i < location.size(); i++) {
            latitude = Double.parseDouble(location.get(i).get("latitud"));
            longitude = Double.parseDouble(location.get(i).get("longitud"));
             name4 = String.valueOf(location.get(i).get("usuario_rut_administrador"));
            name = String.valueOf(location.get(i).get("nombre_estacionamiento"));
            name2 = String.valueOf(location.get(i).get("cantidad_cupos"));
            name1 = "Nombre Estacionamiento: " + name;
            name3 = "Cupos Disponibles: " + name2;







            MarkerOptions markerOptions = new MarkerOptions().position(new LatLng(latitude, longitude)).title(name1).snippet(name3);
            markers = googleMap.addMarker(markerOptions);
            markers.showInfoWindow();
            //idmarker = new HashMap<Marker, String>();
            idmarker.put(markers, i);

        }

        googleMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
            @Override
            public boolean onMarkerClick(Marker marker) {
                Intent iratienda = new Intent(getApplicationContext(), ConfirmarReserva.class);
                LatLng lat_long = marker.getPosition();
                String id = String.valueOf(idmarker.get(marker));
                iratienda.putExtra("idMarker",id);
                iratienda.putExtra("usuario_rut_administrador",name4);
                iratienda.putExtra("nombre_estacionamiento", name);
                iratienda.putExtra("latitud", lat_long.latitude);
                iratienda.putExtra("longitud", lat_long.longitude);
                iratienda.putExtra("cantidad_cupos",name2);
                Log.e("Informacion_enviada", String.valueOf(id));
                startActivity(iratienda);
                return false;


            }
        });

    // SharedPreferences guardarID = getBaseContext().getSharedPreferences("guardarID", MODE_PRIVATE);
    //SharedPreferences.Editor edit = guardarID.edit();
    //edit.putString("ID", name4.trim()).apply();
    //edit.putString("name",name1.trim()).apply();
    //edit.putString("cantidad",name3.trim()).apply();
    //edit.apply();
    //edit.commit();
        }



public static String getHttpGet(String url) {
    StringBuilder str = new StringBuilder();
    HttpClient client = new DefaultHttpClient();
    HttpGet httpGet = new HttpGet(url);
    try {
        HttpResponse response = client.execute(httpGet);
        StatusLine statusLine = response.getStatusLine();
        int statusCode = statusLine.getStatusCode();
        if (statusCode == 200) { // Download OK
            HttpEntity entity = response.getEntity();
            InputStream content = entity.getContent();
            BufferedReader reader = new BufferedReader(new InputStreamReader(content));
            String line;
            while ((line = reader.readLine()) != null) {
                str.append(line);
            }
        } else {
            Log.e("Log", "Failed to download result..");
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
    return str.toString();
}

}

    
asked by Fernando Brito 19.06.2018 в 10:07
source

0 answers