G
GlureM
Neues Mitglied
- 0
Hei Leute ich habe das Problem dass mirbeim Code kein Error angezeigt wird jedoch sich die Camera nicht zu meiner Position auf der Map hineinzoomt.
Kann wer von euch was entdecken was ich vergessen habe oder falsch gemacht habe?
Kann wer von euch was entdecken was ich vergessen habe oder falsch gemacht habe?
Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Android.Locations;
using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Util;
using Android.Views;
using Android.Widget;
using Android.Gms.Maps;
using Android.Gms.Maps.Model;
namespace HKEDV_GPS
{
public class MapFragment : Fragment, ILocationListener
{
//Für Location/Map
public Location currentLocation;
public LocationManager locationManager;
public GoogleMap map;
//Strings
public string locationProvider;
public string locationText;
public LatLng locationPoint;
//Camera
public CameraUpdate cameraUpdate;
public CameraPosition cameraPosition;
// Fragment wird definiert
public static Fragment NewInstance(int position)
{
Fragment fragment = new MapFragment();
Bundle args = new Bundle();
return fragment;
}
// Layout wird angegeben
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
//Besten Provider suchen
locationManager = (LocationManager)Activity.GetSystemService(Context.LocationService);
var locationCriteria = new Criteria();
locationCriteria.Accuracy = Accuracy.Fine;
locationCriteria.PowerRequirement = Power.NoRequirement;
IList<string> acceptableLocationProviders = locationManager.GetProviders(locationCriteria, true);
//Wenn kein Provider vorhanden = string.Empty
if (acceptableLocationProviders.Any ()) {
locationProvider = acceptableLocationProviders.First ();
} else {
locationProvider = String.Empty;
Toast.MakeText (Activity, "Keine Provider gefunden", ToastLength.Short).Show ();
};
return inflater.Inflate(Resource.Layout.map, container, false);
}
public void StartLocationUpdates(Location location)
{
var locationCriteria = new Criteria();
locationCriteria.Accuracy = Accuracy.Fine;
locationCriteria.PowerRequirement = Power.NoRequirement;
locationProvider = locationManager.GetBestProvider(locationCriteria, true);
locationManager.RequestLocationUpdates(locationProvider, 1000, 10, this);
currentLocation = location;
//Position als String und LatLng ausgeben
locationText = String.Format("{0},{1}", currentLocation.Latitude, currentLocation.Longitude);
locationPoint = new LatLng(currentLocation.Latitude, currentLocation.Longitude);
//Camera Builder
CameraPosition.Builder builder = CameraPosition.InvokeBuilder();
builder.Target(locationPoint);
builder.Zoom(18);
cameraPosition = builder.Build();
cameraUpdate = CameraUpdateFactory.NewCameraPosition(cameraPosition);
//Camera soll zur Position zoomen
map.MoveCamera(cameraUpdate);
}
//Wenn das Layout geladen ist
public void OnResume(Location location)
{
base.OnResume();
var locationCriteria = new Criteria();
locationCriteria.Accuracy = Accuracy.Fine;
locationCriteria.PowerRequirement = Power.NoRequirement;
locationProvider = locationManager.GetBestProvider(locationCriteria, true);
locationManager.RequestLocationUpdates(locationProvider, 1000, 10, this);
currentLocation = location;
//Position als String und LatLng ausgeben
locationText = String.Format("{0},{1}", currentLocation.Latitude, currentLocation.Longitude);
locationPoint = new LatLng(currentLocation.Latitude, currentLocation.Longitude);
//Camera Builder
CameraPosition.Builder builder = CameraPosition.InvokeBuilder();
builder.Target(locationPoint);
builder.Zoom(18);
cameraPosition = builder.Build();
cameraUpdate = CameraUpdateFactory.NewCameraPosition(cameraPosition);
//Camera soll zur Position zoomen
map.MoveCamera(cameraUpdate);
}
//Wenn im Hintergrund
public override void OnPause()
{
base.OnPause();
locationManager.RemoveUpdates(this);
}
//Wird aufgerufen wennn Position verändert wurde
public void OnLocationChanged(Location location)
{
//Position als String und LatLng ausgeben
locationText = String.Format("{0},{1}", currentLocation.Latitude, currentLocation.Longitude);
locationPoint = new LatLng(currentLocation.Latitude, currentLocation.Longitude);
//Camera Builder
CameraPosition.Builder builder = CameraPosition.InvokeBuilder();
builder.Target(locationPoint);
builder.Zoom(18);
cameraPosition = builder.Build();
cameraUpdate = CameraUpdateFactory.NewCameraPosition(cameraPosition);
//Camera soll zur Position zoomen
map.MoveCamera(cameraUpdate);
}
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
}
}
}