- Forum-Beiträge: 180
02.02.2015, 11:10:32 via Website
02.02.2015 11:10:32 via Website
Hei Leute
Ich habe ein Fragment dass mit einer Map verknüpft ist.
In dieser Map soll die App automatisch zur Position hineinzoomen.
Doch irgendwie gelingt es mir nicht dass die kamera selbstständig zur position hineinzoomt.
Der Code ist ähnlich aufgebaut wie in Java also die die nur Java können können hier auch helfen!
Hier mal der code:
Fällt jemanden was auf?
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;
LocationManager locationManager;
public GoogleMap map;
//Strings
public string locationProvider;
public string locationText;
public LatLng locationPoint;
//Camera
CameraUpdate cameraUpdate;
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, 0, 0, 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, 0, 0, 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
}
}
}
— geändert am 02.02.2015, 15:54:55
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.