private void RegionMoved(MapRegionMoveEventArgs e)
        {
            var map = Control as MapView;

            float          zoom   = e.Zoom > 0 ? (float)e.Zoom : map.Camera.Zoom;
            CameraPosition camera = CameraPosition.FromCamera(e.Latitude, e.Longitude, zoom);

            map.Animate(camera);
        }
        private void RegionMoved(object sender, MapRegionMoveEventArgs e)
        {
            var map = Control;

            if (Math.Abs(map.Camera.Target.Latitude - e.Latitude) < 0.0001 &&
                Math.Abs(map.Camera.Target.Longitude - e.Longitude) < 0.0001 &&
                Math.Abs(map.Camera.Zoom - e.Zoom) < 0.01)
            {
                var position = new CLLocationCoordinate2D(e.Latitude, e.Longitude);
                Map_CoordinateTapped(this, new GMSCoordEventArgs(position));
                Map_CameraPositionIdle(this, new GMSCameraEventArgs(map.Camera));
            }
            else
            {
                var camera = CameraPosition.FromCamera(e.Latitude, e.Longitude, e.Zoom);
                map.Animate(camera);
            }
        }