Mehrere Map Marker in MapView laden

  • Antworten:5
Dominik Hartl
  • Forum-Beiträge: 44

29.03.2017, 21:28:45 via Website

Hallo Zusammen,

ich habe folgendes Problem:
ich würde gerne mehrer Marker an beliebigen Positionen in einer Map anzeigen.
Dazu habe ich mir einen JSOn gebastelt und einen hierfür passende HttpHandler.
Inn der MapsActivity werden dann die daten aus dem JSON geladen und angezeigt.
Leider wird nur einer angezeigt, obwohl in meinem JSON zwei hinterlegt sind. Ich weiss. dass ich hierfür eine Schleife brauche, weiss jedoch nicht, wie ich die formulieren soll, sodass alle Marker angezeigt werden.
Anbei findet ihr meine MapsActivity:

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {
private ProgressDialog pDialog;
private GoogleMap mMap;
private static String url="http://partypeople.bplaced.net/markers.json";
ArrayList<HashMap<String, String>> contactList;
private String TAG = MainActivity.class.getSimpleName();
double latitude;
double longitude;
String namec;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_test);
    contactList = new ArrayList<>();
    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
            .findFragmentById(R.id.map3);
    mapFragment.getMapAsync(this);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);

    ImageButton locations= (ImageButton) findViewById(R.id.imagebuttonLocations);
    locations.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
           Intent i = new Intent(MapsActivity.this, MainActivity.class);
            i.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
            startActivity(i);
        }
    });
}

private class GetContacts extends AsyncTask<Void, Void, Void> {

    @Override
    protected void onPreExecute() {
        super.onPreExecute();


    }

    @Override
    protected Void doInBackground(Void... arg0) {
        HttpHandler sh = new HttpHandler();


        String jsonStr = sh.makeServiceCall(url);

        Log.e(TAG, "Response from url: " + jsonStr);

        if (jsonStr != null) {
            try {
                JSONObject jsonObj = new JSONObject(jsonStr);


                JSONArray contacts = jsonObj.getJSONArray("contacts");


                for (int i = 0; i < contacts.length(); i++) {
                    JSONObject c = contacts.getJSONObject(i);

                    String id = c.getString("id");
                    String name = c.getString("name");
                    String address = c.getString("address");
                    String lat = c.getString("lat");
                    String lng = c.getString("lng");




                    // tmp hash map for single contact
                    HashMap<String, String> contact = new HashMap<>();

                    // adding each child node to HashMap key => value
                    contact.put("id", id);
                    contact.put("name", name);
                    contact.put("address",address);
                    contact.put("lat", lat);
                    contact.put("lng", lng);

                    latitude = Double.parseDouble(lat); longitude = Double.parseDouble(lng);
                    contactList.add(contact);
                    namec = name;


                }
            } catch (final JSONException e) {
                Log.e(TAG, "Json parsing error: " + e.getMessage());
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        Toast.makeText(getApplicationContext(),
                                "Json parsing error: " + e.getMessage(),
                                Toast.LENGTH_LONG)
                                .show();
                    }
                });

            }
        } else {
            Log.e(TAG, "Couldn't get json from server.");
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    Toast.makeText(getApplicationContext(),
                            "Couldn't get json from server. Check LogCat for possible errors!",
                            Toast.LENGTH_LONG)
                            .show();
                }
            });

        }

        return null;
    }

    @Override
    protected void onPostExecute(Void result) {
        super.onPostExecute(result);
        LatLng P1 = new LatLng(latitude, longitude);
        mMap.addMarker(new MarkerOptions().position(P1).title(namec));
        mMap.moveCamera(CameraUpdateFactory.newLatLng(P1));

    }

}
@Override
public void onMapReady(GoogleMap googleMap) {

    mMap = googleMap;
    new GetContacts().execute();
    mMap.setMyLocationEnabled(true);





}

}

Schöne Grüße
Dominik

Antworten
swa00
  • Forum-Beiträge: 3.704

29.03.2017, 22:39:49 via Website

Auf wie viel Hochzeiten willst du denn mit verschiedenen Accounts noch die Leute auf Trap halten ?

http://www.android-hilfe.de/thema/offen-wie-kann-ich-mehrere-marker-in-eine-mapview-laden.823998/

https://www.nextpit.de/forum/735949/nach-permission-abfrage-wird-eigener-standort-erst-nach-neustart-der-app-angezeigt

Ein bisschen Eigenrecherche - gerade in Basis-Dingen - wäre jetzt mal angebracht.

Schreibst du die App, oder sollen wir das für dich gar umsetzen ?

— geändert am 29.03.2017, 22:44:36

Liebe Grüße - Stefan
[ App - Entwicklung ]

Antworten
Dominik Hartl
  • Forum-Beiträge: 44

30.03.2017, 21:38:37 via Website

Ja wenn keiner Antwortet :)

Antworten
Dominik Hartl
  • Forum-Beiträge: 44

30.03.2017, 21:51:05 via Website

Und ich hab im netz leider nix gefunden

Antworten
swa00
  • Forum-Beiträge: 3.704

31.03.2017, 08:29:40 via Website

Ja wenn keiner Antwortet

Klartext :

Das beruht immer wieder auf der gleichen Begründung , die du schon in allen Foren
erhalten hast.

Die "Helfenden" sind schlichtweg genervt, dass Sie dir Tipps geben und Dich bitten, dich einmal mit den Grundlagen
intensiv auseinander zu setzen.

Auch wird recht schnell klar, dass Du viel aus dem Netz kopierst, allerdings gar nicht verstehst, was da passiert.

Und wenn man das Gefühl vermittelt bekommt , da mag einer eine Wand mauern - ohne zu wissen , was Zement und Wasser ist - dann fragt man sich schon, warum er das denn mal nicht selbst nachliest.

Und was gar nicht geht : Hier Dominik - dort Peter etc. - Die User sind doch nicht blöde.
Du hast Dich mit Treffsicherheit eigenständig auf die rote Liste gesetzt.

Jeder hilft dir gerne dein Haus zu bauen , aber Mauern solltest du schon selbst hochziehen können.
Und solange das nicht ansatzweise zu erkennen ist, wird es immer stiller.
.
.

ich weiss. dass ich hierfür eine Schleife brauche, weiss jedoch nicht, wie ich die formulieren soll, sodass alle Marker angezeigt werden.

Und genau das ist mit Grundlagen gemeint :
Das hat nix mit deinen Maps zu tun, sondern mit deinem fehlenden Basis-Wissen.

— geändert am 31.03.2017, 13:37:00

Liebe Grüße - Stefan
[ App - Entwicklung ]

Pascal P.

Antworten
Dominik Hartl
  • Forum-Beiträge: 44

31.03.2017, 19:40:48 via Website

okay.

Antworten