void FindMap () { _map = (SupportFragmentManager.FindFragmentById (Resource.Id.map) as SupportMapFragment).Map; if (_map != null) { _map.MyLocationEnabled = true; _map.UiSettings.TiltGesturesEnabled = false; _map.UiSettings.RotateGesturesEnabled = false; _map.MapClick += OnMapClick; _map.MapLongClick += OnMapLongClick; _map.MyLocationChange += HandleMyLocationChange; _map.MarkerClick += OnMarkerClick; _map.SetInfoWindowAdapter (new InfoWindowAdapter ()); // here because map should be already initialized // http://developer.android.com/reference/com/google/android/gms/maps/model/BitmapDescriptorFactory.html _alarm_marker_normal = BitmapDescriptorFactory.FromResource (Resource.Drawable.marker_violet); _alarm_marker_normal_selected = BitmapDescriptorFactory.FromResource (Resource.Drawable.marker_violet_selected); _alarm_marker_disabled_selected = BitmapDescriptorFactory.FromResource (Resource.Drawable.marker_grey_selected); _alarm_marker_disabled = BitmapDescriptorFactory.FromResource (Resource.Drawable.marker_grey); RefreshData (); _map.SetOnMapLoadedCallback (this); if (Mode == Mode.Add) { if (AlarmToAddMarker != null) { AlarmToAddMarker = _map.AddMarker (new MarkerOptions ().SetPosition (AlarmToAddMarker.Position).InvokeIcon (_alarm_marker_normal)); } } } }
protected override void OnAttached() { var mapView = Control as MapView; if(mapView == null) return; behavior = (MapExtensionBehavior) (Element as Map)?.Behaviors?.FirstOrDefault(x => x is MapExtensionBehavior); if(behavior == null) return; var zoomButton = mapView.FindViewById(1); // ズームボタン LinearLayout if(zoomButton != null) { zoomButton.Visibility = Android.Views.ViewStates.Invisible; } var locationButton = mapView.FindViewById(2); // 現在位置ボタン ImageView if(locationButton != null) { locationButton.Visibility = Android.Views.ViewStates.Invisible; } var callback = new OnMapReadyCallback(); callback.MapReady += (sender, e) => { googleMap = callback.GoogleMap; googleMap.MyLocationChange += GoogleMap_MyLocationChange; // なぜかCameraChangeにハンドラを追加するとXF.Maps.Map.VisibleRegionが更新されなくなる // googleMap.CameraChange += GoogleMap_CameraChange; var point = new LatLng( XFAedSearch.Droid.Helpers.Settings.Latitude, XFAedSearch.Droid.Helpers.Settings.Longitude); googleMap.MoveCamera(CameraUpdateFactory.NewLatLngZoom(point, XFAedSearch.Droid.Helpers.Settings.ZoomLevel)); googleMap.SetOnMapLoadedCallback(new MapLoadedCallback { OnMapLoadedAction = () => MapLoaded?.Invoke(this, new EventArgs()) }); }; mapView.GetMapAsync(callback); }