Problem mit GoogleMaps

nussecke001 schrieb:
Du meinst also dass ich keine eigene Activity bräuchte, sondern in meiner Activity, die eigentlich zuvor durchlaufen wird das Fragment einbauen kann?

Genau. Du hast eine Host-Activity und greifst bspw über einen FragmentPagerAdapter auf das Fragment zu.
Den Hex-Wert kannst du natürlich auch einsetzen, aber in der Regel ist es sinnvoller (und lesbarer) wenn du das Layout über die Verlinkung ansprichst (also R.layout.deinLayout).

Auf welcher Android Version programmierst du? Bei mir gab es unter Lollipop hinsichtlich der Erstellung der Map Probleme, wenn ich die Map in der onCreateView erstellt habe. Wenn du den Code in onResume (gehört da ja eigentlich nicht hin) ausführst, ist die Anwendung wahrscheinlich stabiler.

Ich schau mir morgen deinen Code nochmal genauer an.

Nachtrag auf die schnelle:
Was ist eigentlich der aktuelle Fehler? Prüfe mal bitte was passiert, wenn du die Map auf Gültigkeit prüfst... zB mittels: if(map!=null)... Projektion setzen, usw...
 
Zuletzt bearbeitet:
MapActivity? Da ist mir eher gleich eingefallen, dass das noch die Maps Api v1 ist. Warum nicht auf v2 umsteigen? Ich denke auch wenn du dir nen Api Key erstellst, dass der nur ab v2 gültig ist.

https://developers.google.com/maps/documentation/android/start

Nicht umsonst steht hier: https://developers.google.com/maps/documentation/android/v1/hello-mapview?hl=de "deprecated" drüber.
This means that from March 18th, 2013 you will no longer be able to request an API key for this version.


Der ursprüngliche Beitrag von 21:55 Uhr wurde um 22:03 Uhr ergänzt:

PS. getMap() ist auch deprecated, dafür gibt es jetzt getMapAsync().
Die veralteten Methoden müssten dir doch in deiner IDE angezeigt werden oder?
 
Also ich programmiere auch auf Lollipop.

missspelled schrieb:
Was ist eigentlich der aktuelle Fehler? Prüfe mal bitte was passiert, wenn du die Map auf Gültigkeit prüfst... zB mittels: if(map!=null)... Projektion setzen, usw...
Ich muss leider gestehen, dass ich nicht weiß, wo genau ich das hin setzen soll?
Rot markiert werden mir auf jeden Fall diese beiden Zeilen:
Code:
    setContentView(0x7f030002);
    map = ((MapFragment) getFragmentManager().findFragmentById(R.id.mapview))
        .getMap();

Wenn ich das onCreateView in onResume umstelle, markiert er mir auch das rot :/
Die Fehlermeldung ist immer:
Code:
The method xxx(int) is undefined for the type AltmuehlbrueckeMap


KatyB schrieb:
Warum nicht auf v2 umsteigen?
Ich habe mir den Link mal angesehen den du mir geschickt hast und den Code versucht so einzufügen wie in dem Tutorial. Dadurch wird aber fast die ganze Java-Datei rot markiert.
Im Manifest und in der XML-Datei scheint alles zu stimmen (tut's aber momentan auch).
 
Vllt solltest du dir erstmal grundlegendste Kenntnisse über Java & Android verschaffen bevor du dich mit Fragmenten und der Map API auseinander setzte....

Hier ist mein Code mit der Map-Api von Juni bis Oktober letzten Jahres... vllt. hilft er dir ja weiter....

Code:
import android.app.Activity;
import android.database.Cursor;
import android.os.Bundle;
import android.support.v4.app.LoaderManager.LoaderCallbacks;
import android.support.v4.content.CursorLoader;
import android.support.v4.content.Loader;
import android.util.Log;
import android.view.View;

import com.google.android.gms.maps.GoogleMap.OnInfoWindowClickListener;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.CircleOptions;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.Marker;
import com.google.android.gms.maps.model.MarkerOptions;

import java.util.HashMap;



/**
 * 
 * @since 26.03.2014
 * 
 */
public class GeofenceMapFragment extends SupportMapFragment implements
		OnInfoWindowClickListener, LoaderCallbacks<Cursor> {

	private static final String TAG = GeofenceMapFragment.class.getSimpleName();
	private HashMap<Marker, SimpleGeofence> markers;

	@Override
	public void onAttach(Activity activity) {
		super.onAttach(activity);
		markers = new HashMap<Marker, SimpleGeofence>();
	}

	@Override
	public void onCreate(Bundle savedInstanceState) {
		Log.v(TAG, "onCreate()");
		super.onCreate(savedInstanceState);
		getLoaderManager().initLoader(0, null, (LoaderCallbacks<Cursor>) this);
	}

	public static GeofenceMapFragment newInstance() {
		Log.v(TAG, "newInstance()");
		GeofenceMapFragment frag = new GeofenceMapFragment();
		return frag;
	}

	@Override
	public void onViewCreated(View view, Bundle savedInstanceState) {
		Log.w(TAG, "onViewCreated()");
		super.onViewCreated(view, savedInstanceState);
		getMap().setMyLocationEnabled(true);
		getMap().setOnInfoWindowClickListener(this);
	}

	private void fillData(Cursor cursor) {
		Log.v(TAG, "fillData()");
		while (cursor.moveToNext()) {
			SimpleGeofence geofence = SimpleGeofenceBuilder.fromCursor(cursor);

			LatLng latlng = new LatLng((double) geofence.getLatitude(),
					(double) geofence.getLongitude());
			MarkerOptions marker = new MarkerOptions()
					.title(geofence.getTitle())
					.snippet(geofence.getDescription()).position(latlng);
			Marker m = getMap().addMarker(marker);
			markers.put(m, geofence);

			CircleOptions circleOptions = new CircleOptions();
			circleOptions
					.center(latlng)
					.radius(geofence.getRadius())
					.fillColor(
							getActivity().getResources().getColor(
									R.color.circle)).strokeWidth(0f);
			getMap().addCircle(circleOptions);
			// TODO Marker beschriften mit eigenem Layout
		}
	}

	private void clearMarker() {
		Log.v(TAG, "clearMarker()");
		// FIXME marker entfernen
	}

	@Override
	public void onInfoWindowClick(Marker marker) {
		SimpleGeofence geofence = markers.get(marker);
		Log.v(TAG, "onInfoWindowClick()");
		Log.i(TAG, "ID: " + geofence.getId());
		((MainActivity) getActivity()).showDetail(geofence.getId());
	}

	@Override
	public Loader<Cursor> onCreateLoader(int arg0, Bundle arg1) {
		CursorLoader cursorLoader = new CursorLoader(getActivity(),
				LocationContentProvider.CONTENT_URI, null, null, null, null);
		return cursorLoader;
	}

	@Override
	public void onLoadFinished(Loader<Cursor> arg0, Cursor cursor) {
		clearMarker();
		fillData(cursor);
		cursor.close();
	}

	@Override
	public void onLoaderReset(Loader<Cursor> cursor) {
		clearMarker();
	}
}
lg. Dagobert
 
Hi Leute :)
Ihr wolltet doch wissen - wenn ich das Problem gelöst habe - wie man es löst. Ich weiß nicht wo genau der Fehler lag, aber als ich mir einen neuen API-Schlüssel erstellt habe, ging plötzlich alles ... :/
Tausend Dank für eure Hilfe :)
 

Ähnliche Themen

S
Antworten
4
Aufrufe
1.009
Sempervivum
S
B
Antworten
4
Aufrufe
509
bb321
B
R
Antworten
3
Aufrufe
1.649
Ritartet
R
Zurück
Oben Unten