- Forum-Beiträge: 180
04.02.2015, 12:28:40 via Website
04.02.2015 12:28:40 via Website
Hei Leute
bevor ihr mir nicht helft da ihr seht dass es in C# geschrieben ist möchte ich euch sagen dass der Code ziehmlich Java ähnelt.
Mein Problem besteht darin dass meine App zwar Location Daten bekommt aber immer wenn die App dann zur Position zoomen soll sie abstürtzt. Die LocationDaten werden auch als LatLng angegeben. Doch immer wenn die ersten Daten in die App kommen genau an dem Punkt wo die Camera auf der Map zoomen sollte stürtzt sie ab.
Der Code ist säuberlich geschrieben also sollte es keine großen Probleme bei der überprüfung geben.
Fällt euch da was auf an was es liegen könnte?
Habe ich LatLng falsch defiert?
Also ich komm mit dem AppCrash einfach nicht zurecht da es mir keine Fehler anzeigt und wenn ich die App debugge chrasht sie nicht aber dass Fenster bleibt weiß aber dass liegt daran dass ich es nicht richtig debuggen kann da beim debuggen momentan keine Internetverbingung besteht sodass ich den Crash überprüfen könnte.
Hier der Code:
namespace HKEDV_GPS
{
[Activity (Label = "Location", MainLauncher = true, Icon = "@drawable/icon", Theme = "@style/Theme.Hkedvgps_blue")]
public class Location : Activity, ILocationListener
{
//Location
LocationManager _locMgr;
//Map
GoogleMap _map;
MapFragment _mapFragment;
//Camera
CameraUpdate cameraUpdate;
CameraPosition cameraPosition;
LatLng locationPoint;
//OnCreate
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.map);
_locMgr = GetSystemService(LocationService) as LocationManager;
InitMapFragment();
SetupMapIfNeeded();
}
//Wenn GPS Position geändert wurde
public void OnLocationChanged(Android.Locations.Location location)
{
//Location Text mit (Latitude, Longitude)
locationPoint = new LatLng (location.Latitude, location.Longitude);
}
//Wenn das Layout geladen ist
protected override void OnResume()
{
base.OnResume();
//Kriterien für Provider
Criteria locationCriteria = new Criteria();
locationCriteria.Accuracy = Accuracy.NoRequirement;
locationCriteria.PowerRequirement = Power.NoRequirement;
string locationProvider = _locMgr.GetBestProvider(locationCriteria, true);
if (!String.IsNullOrEmpty(locationProvider))
{
_locMgr.RequestLocationUpdates(locationProvider, 10000, 1, this);
}
else
{
Toast.MakeText (this, "Keinen Provider gefunden", ToastLength.Long).Show ();
}
//Camera Builder
CameraPosition.Builder builder = CameraPosition.InvokeBuilder();
builder.Target(locationPoint);
builder.Zoom(15);
cameraPosition = builder.Build();
cameraUpdate = CameraUpdateFactory.NewCameraPosition(cameraPosition);
_map.AnimateCamera (cameraUpdate);
}
//Wenn die App im Hintergrund ist
protected override void OnPause()
{
base.OnPause();
_locMgr.RemoveUpdates(this);
}
//Map initialisieren
private void InitMapFragment()
{
_mapFragment = FragmentManager.FindFragmentByTag("map") as MapFragment;
if (_mapFragment == null)
{
GoogleMapOptions mapOptions = new GoogleMapOptions()
.InvokeMapType(GoogleMap.MapTypeNormal)
.InvokeZoomControlsEnabled(false)
.InvokeCompassEnabled(true);
FragmentTransaction fragTx = FragmentManager.BeginTransaction();
_mapFragment = MapFragment.NewInstance(mapOptions);
fragTx.Add(Resource.Id.mapWithOverlay, _mapFragment, "map");
fragTx.Commit();
}
}
//Wenn die Map initialisiert werden muss
private void SetupMapIfNeeded()
{
if (_map == null)
{
_map = _mapFragment.Map;
if (_map != null)
{
Toast.MakeText (this, "Map erfolgreich geladen", ToastLength.Short).Show ();
}
}
}
public void OnProviderDisabled(string provider)
{
//Not implemented
}
public void OnProviderEnabled(string provider)
{
//Not implemented
}
public void OnStatusChanged(string provider, Availability status, Bundle extras)
{
//Not implemented
}
//Menu Items werden hier hinzugefügt
public override bool OnCreateOptionsMenu(IMenu menu)
{
MenuInflater inflater = new Android.Views.MenuInflater (this);
inflater.Inflate (Resource.Menu.items, menu);
return base.OnCreateOptionsMenu(menu);
}
//Aktionen für das Menu
public override bool OnOptionsItemSelected(IMenuItem item)
{
switch (item.ItemId)
{
case Resource.Id.car:
var intent = new Intent(this, typeof(KMBook));
StartActivity(intent);
return true;
}
return base.OnOptionsItemSelected(item);
}
}
}
MFG Lukas R.
Programmieren ist nicht nur eine Wissenschaft, sondern auch ein Lifestyle!
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.