Google Maps: Android Studio Get the ID of a Marker and move on to another activity

0

Hello, I am trying from a map to be able to select a marker and send it to a new activity by passing the information of "ID", "lat" and "long", but when selecting it, it sends me to the activity with other information, someone knows how I should do it, I appreciate all those who can help me.

This is my code:

public class MapaGeneral extends FragmentActivity implements GoogleMap.OnMyLocationChangeListener {

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

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

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

        ArrayList<HashMap<String, String>> location = null;
        String url = "http://www.lifes.com.co/vet_life/info_map_general.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("tienId", String.valueOf(tienda.getInt("tienId")));
                map.put("lat", tienda.getString("lat"));
                map.put("lng", tienda.getString("lng"));
                map.put("tienNombre", tienda.getString("tienNombre"));
                map.put("tienDescripcion", tienda.getString("tienDescripcion"));
                Log.e("lo que recibe el mapa", String.valueOf(map));
                location.add(map);
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }
        // *** Display Google Map
        googleMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();

        // *** Focus & Zoom
        assert location != null;
        Double latitude = Double.parseDouble(location.get(0).get("lat"));
        Double longitude = Double.parseDouble(location.get(0).get("lng"));
        LatLng coordinate = new LatLng(latitude, longitude);
        googleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
        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("lat"));
            longitude = Double.parseDouble(location.get(i).get("lng"));
            String name = location.get(i).get("tienNombre");
            String descip = location.get(i).get("tienDescripcion");
            MarkerOptions markerOptions = new MarkerOptions()
                    .position(new LatLng(latitude, longitude))
                    .title(name)
                    .snippet(descip);
            markers = googleMap.addMarker(markerOptions);
            googleMap.setOnMyLocationChangeListener(this);
            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(), Informacion_Cliente.class);
                LatLng lat_long = marker.getPosition();
                int id = idmarker.get(marker);
                iratienda.putExtra("tienId", id);
                iratienda.putExtra("lat", lat_long.latitude);
                iratienda.putExtra("long", lat_long.longitude);
                Log.e("Informacion_enviada", String.valueOf(id));
                startActivity(iratienda);
                return false;
            }
        });
    }

    @Override
    public void onMyLocationChange(Location loc) {
        LatLng myposicion = new LatLng(loc.getLatitude(), loc.getLongitude());
        googleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(myposicion, 14));
        googleMap.setOnMyLocationChangeListener(null);
    }

    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 Lifes Company 31.10.2016 в 21:34
source

0 answers