[英]Getting user location in Xamarin with google play services
我想在Android應用中顯示當前用戶位置,例如GMaps中的藍點。 我在網上搜索,但可能缺少一些重要的信息。
這些是我的課程派生的類或接口
public class TargetActivity : AppCompatActivity, IOnMapReadyCallback, Android.Locations.ILocationListener
這段代碼來自我的MainActivity,這是我第一次在Android上編程,所以我真的不知道從這里開始。
public GoogleMap _map;
public MapFragment _mapFragment;
LocationManager locationManager;
string provider;
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.Target);
_mapFragment = FragmentManager.FindFragmentById(Resource.Id.map) as MapFragment;
if (_mapFragment == null)
{
GoogleMapOptions mapOptions = new GoogleMapOptions()
.InvokeMapType(GoogleMap.MapTypeTerrain)
.InvokeZoomControlsEnabled(false)
.InvokeCompassEnabled(true);
FragmentTransaction fragTx = FragmentManager.BeginTransaction();
_mapFragment = MapFragment.NewInstance(mapOptions);
fragTx.Add(Resource.Id.map, _mapFragment, "map");
fragTx.Commit();
}
_mapFragment.GetMapAsync(this);
if (_map != null)
{
_map.UiSettings.ZoomControlsEnabled = false;
_map.UiSettings.CompassEnabled = true;
_map.MapType = GoogleMap.MapTypeTerrain;
}
locationManager = (LocationManager)GetSystemService(Context.LocationService);
provider = locationManager.GetBestProvider(new Criteria(), false);
Location location = locationManager.GetLastKnownLocation(provider);
if (location == null)
{
System.Diagnostics.Debug.WriteLine("no location");
}
}
public void OnMapReady(GoogleMap googleMap)
{
MarkerOptions markerOptions = new MarkerOptions();
markerOptions.SetPosition(new LatLng(16.03, 108));
markerOptions.SetTitle("AAAA");
googleMap.AddMarker(markerOptions);
}
public void OnLocationChanged(Location location)
{
double lat, lng;
lat = location.Latitude;
lng = location.Longitude;
MarkerOptions markerOptions = new MarkerOptions();
markerOptions.SetPosition(new LatLng(lat, lng));
markerOptions.SetTitle("Posizione");
_map.AddMarker(markerOptions);
CameraPosition.Builder builder = CameraPosition.InvokeBuilder();
builder.Target(new LatLng(lat, lng));
CameraPosition cameraPosition = builder.Build();
CameraUpdate cameraUpdate = CameraUpdateFactory.NewCameraPosition(cameraPosition);
_map.MoveCamera(cameraUpdate);
}
public void OnProviderDisabled(string provider)
{
//throw new NotImplementedException();
}
public void OnProviderEnabled(string provider)
{
//throw new NotImplementedException();
}
public void OnStatusChanged(string provider, [GeneratedEnum] Availability status, Bundle extras)
{
//throw new NotImplementedException();
}
您需要實現OnMyLocationButtonClickListener
和OnMyLocationClickListener
。 在地圖實例上啟用位置服務,並覆蓋相關方法。 只要您有權定位,幾乎所有東西都會為您處理。 在這里看看文檔
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.