P
Peter200980
Ambitioniertes Mitglied
- 0
Hallo Zusammen,
für meine Map versuche ich gerade mir eine "Preview" zu basteln, die ein paar Infos über den angeklickten Marker anzeigen soll. Leider funktioniert es nicht so richtig, da immer der Inhalt eines JSON "reiters" angezeigt, egal welcher Marker geklickt wird.
Anbei noch meine MapsActivity, in der alles ablaufen soll. Die Preview ist das Layout "prev"
für meine Map versuche ich gerade mir eine "Preview" zu basteln, die ein paar Infos über den angeklickten Marker anzeigen soll. Leider funktioniert es nicht so richtig, da immer der Inhalt eines JSON "reiters" angezeigt, egal welcher Marker geklickt wird.
Anbei noch meine MapsActivity, in der alles ablaufen soll. Die Preview ist das Layout "prev"
Code:
public class MapsActivity extends FragmentActivity implements OnMapReadyCallback
{
private ProgressDialog pDialog;
private GoogleMap mMap;
private static String url="";
ArrayList<HashMap<String, String>> contactList;
private String TAG = MainActivity.class.getSimpleName();
double latitude;
double longitude;
String namec;
ImageView bmImage;
String Imageurl;
@Override
protected void onCreate( Bundle savedInstanceState) {
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
contactList = new ArrayList<>();
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map3);
mapFragment.getMapAsync(this);
ImageButton locations = (ImageButton) findViewById(R.id.btnloc);
locations.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(MapsActivity.this, MainActivity.class);
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 street = c.getString("street");
String postalcode = c.getString("postalcode");
String musicstyle = c.getString("musicstyle");
String musicsecond = c.getString("musicsecond");
String entry = c.getString("entry");
String opening = c.getString("opening");
String agegroup = c.getString("agegroup");
String imageurl = c.getString("imageurl");
String urlbtn = c.getString("urlbtn");
String Fsk = c.getString("Fsk");
String city = c.getString("city");
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("street",street);
contact.put("postalcode",postalcode);
contact.put("musicstyle",musicstyle);
contact.put("musicsecond",musicsecond);
contact.put("entry",entry);
contact.put("opening",opening);
contact.put("agegroup",agegroup);
contact.put("imageurl",imageurl);
contact.put("urlbtn",urlbtn);
contact.put("Fsk",Fsk);
contact.put("city",city);
contact.put("lat", lat);
contact.put("lng", lng);
latitude = Double.parseDouble(lat); longitude = Double.parseDouble(lng);
contactList.add(contact);
namec = lat;
Imageurl = imageurl;
}
} 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);
for (final HashMap<String, String> contact: contactList) {
LatLng P1 = new LatLng(
Double.parseDouble(contact.get("lat")),
Double.parseDouble(contact.get("lng")));
mMap.addMarker(new MarkerOptions().position(P1).title(contact.get("name")));
mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {
@Override
public void onMapClick(LatLng latLng) {
LinearLayout prev = (LinearLayout) findViewById(R.id.schwanz);
Animation slideDown = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.slide_down);
if(prev.getVisibility()==View.VISIBLE){
prev.startAnimation(slideDown);
prev.setVisibility(View.INVISIBLE);
}
}
});
mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker) {
LinearLayout prev = (LinearLayout) findViewById(R.id.schwanz);
ImageView imgprev = (ImageView) findViewById(R.id.imgprev);
Picasso.with(getBaseContext())
.load(contact.get("imageurl"))
.into(imgprev );
TextView namepren= (TextView) findViewById(R.id.nameprev);
namepren.setText(contact.get("name"));
Animation slideUp = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.slide_up);
Animation slideDown = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.slide_down);
if(prev.getVisibility()==View.INVISIBLE){
prev.startAnimation(slideUp);
prev.setVisibility(View.VISIBLE);
}
return false;
}
});
}
}
}
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
new GetContacts().execute();
mMap.setMyLocationEnabled(true);
}
}