P
Peter200980
Ambitioniertes Mitglied
- 0
Hallo Zusammen,
ich versuch gerade mehrere MapMarker in eine Karte zu laden.
Bei einem Marker funktioniert alles problemlos, doch ich weiss nicht wie ich die Schleife formulieren soll, um mehrere Marker anzuzeigen.
Anbei findet ihr meinen Code:
Desweiteren habe ich das Problem, wenn ich nur einen Marker anzeigen will, d.h. wenn ich nicht den Marker mit den Statischen Koordinaten setze, wird der andere Marker auf dem Äquator angezeigt, wenn ich jedoch einen statischen hinzufüge, funktioniert es wieder.
Kann sich das jemand erklären?
Danke & Schöne Grüße
Peter
ich versuch gerade mehrere MapMarker in eine Karte zu laden.
Bei einem Marker funktioniert alles problemlos, doch ich weiss nicht wie ich die Schleife formulieren soll, um mehrere Marker anzuzeigen.
Anbei findet ihr meinen Code:
Code:
public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {
private ProgressDialog pDialog;
private GoogleMap mMap;
private static String url="xxxx";
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);
new GetContacts().execute();
ImageButton locations= (ImageButton) findViewById(R.id.imagebuttonLocations);
locations.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new GetContacts().execute();
}
});
}
private class GetContacts extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(MapsActivity.this);
pDialog.setMessage("Please wait...");
pDialog.setCancelable(false);
pDialog.show();
}
@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 markers = jsonObj.getJSONArray("markers");
for (int i = 0; i < markers.length(); i++) {
JSONObject c = markers.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);
// Dismiss the progress dialog
if (pDialog.isShowing())
pDialog.dismiss();
Toast.makeText(getApplicationContext(),"Parsing funktioniert"+latitude+longitude,Toast.LENGTH_LONG).show();
}
}
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
mMap.setMyLocationEnabled(true);
LatLng a = new LatLng(20,20);
mMap.addMarker(new MarkerOptions().position(a).title("a!"));
LatLng P1 = new LatLng(latitude,longitude);
mMap.addMarker(new MarkerOptions().position(1).title(namec));
mMap.moveCamera(CameraUpdateFactory.newLatLng(1));
}
}
Kann sich das jemand erklären?
Danke & Schöne Grüße
Peter