Вопросы о виртуализации

Нам нужно добавить код в самом рендерере, чтобы удалить пин-код, используя xamarin.forms.maps

В Android: класс рендерера:

private void googleMap_MapClick(object sender, GoogleMap.MapClickEventArgs e)
{
    Map.Pins.Add(new Pin
    {
        Label = "Pin from tap",
        Position = new Position(e.Point.Latitude, e.Point.Longitude))
    }
}

и в классе iOS рендерера: [114 ]

[assembly: ExportRenderer(typeof(ExtMap), typeof(ExtMapRenderer))]
namespace Xamarin.iOS.CustomRenderers
{
    /// <summary>
    /// Renderer for the xamarin ios map control
    /// </summary>
    public class ExtMapRenderer : MapRenderer
    {
        private readonly UITapGestureRecognizer _tapRecogniser;

        public ExtMapRenderer()
        {
            _tapRecogniser = new UITapGestureRecognizer(OnTap)
            {
                NumberOfTapsRequired = 1,
                NumberOfTouchesRequired = 1
            };
        }

        protected override IMKAnnotation CreateAnnotation(Pin pin)
        {
            return base.CreateAnnotation(pin);
        }



        class BasicMapAnnotation : MKAnnotation
        {
            CLLocationCoordinate2D coord;
            string title, subtitle;

            public override CLLocationCoordinate2D Coordinate { get { return coord; } }
            public override void SetCoordinate(CLLocationCoordinate2D value)
            {
                coord = value;
            }
            public override string Title { get { return title; } }
            public override string Subtitle { get { return subtitle; } }
            public BasicMapAnnotation(CLLocationCoordinate2D coordinate, string title, string subtitle)
            {
                this.coord = coordinate;
                this.title = title;
                this.subtitle = subtitle;
            }
        }



        protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            base.OnElementPropertyChanged(sender, e);
        }

        private async void OnTap(UITapGestureRecognizer recognizer)
        {
            var cgPoint = recognizer.LocationInView(Control);
            var nativeMap = Control as MKMapView;

            var location = ((MKMapView)Control).ConvertPoint(cgPoint, Control);

            ((ExtMap)Element).OnTap(new Position(location.Latitude, location.Longitude));

            try
            {
                var lat = location.Latitude;
                var lon = location.Longitude;

                var placemarks = await Geocoding.GetPlacemarksAsync(lat, lon);

                var placemark = placemarks?.FirstOrDefault();
                if (placemark != null)
                {
                    var geocodeAddress =
                        $"AdminArea:       {placemark.AdminArea}\n" +
                        $"CountryCode:     {placemark.CountryCode}\n" +
                        $"CountryName:     {placemark.CountryName}\n" +
                        $"FeatureName:     {placemark.FeatureName}\n" +
                        $"Locality:        {placemark.Locality}\n" +
                        $"PostalCode:      {placemark.PostalCode}\n" +
                        $"SubAdminArea:    {placemark.SubAdminArea}\n" +
                        $"SubLocality:     {placemark.SubLocality}\n" +
                        $"SubThoroughfare: {placemark.SubThoroughfare}\n" +
                        $"Thoroughfare:    {placemark.Thoroughfare}\n";

                    Console.WriteLine(geocodeAddress);
                    var annotation = new BasicMapAnnotation(new CLLocationCoordinate2D(lat, lon), placemark.Thoroughfare, placemark.SubThoroughfare);
                    nativeMap.AddAnnotation(annotation);
                }
            }
            catch (FeatureNotSupportedException fnsEx)
            {
                // Feature not supported on device
                Console.WriteLine(fnsEx);
            }
            catch (Exception ex)
            {
                // Handle exception that may have occurred in geocoding
                Console.WriteLine(ex);
            }




        }

        protected override void OnElementChanged(ElementChangedEventArgs<View> e)
        {
            if (Control != null)
                Control.RemoveGestureRecognizer(_tapRecogniser);

            base.OnElementChanged(e);

            if (Control != null)
                Control.AddGestureRecognizer(_tapRecogniser);
        }
    }
}
11
задан E.J. Brennan 27 December 2011 в 14:27
поделиться

9 ответов

Я сделал широкое применение Microsoft Virtual PC и позже VMware, для установки тестовых сред с различными комбинациями установленных приложений.

MS VPC является наименьшим количеством стычки для установки двух. Это действительно невероятно легко - создают VM, просто наводят и кликают на нескольких настройках, затем Вы присоединяете DVD ОС предпочтительно как файл ISO, и далеко Вы идете (Вам нужна лицензия на каждую копию операционной системы, которую Вы устанавливаете). Не забывайте устанавливать Дополнения Виртуальной машины после того, как у Вас есть Операционная система на, так как это делает интеграцию указателя мыши намного менее неуклюжей.

Можно резервировать целый компьютер только путем копирования файла VHDD.

Единственное ограничение я столкнулся с MS с VPC, то, что Вы не можете установить гостя на 64 бита ОС, если хост ОС составляет 32 бита.

Это не ограничение VMware, однако, который является, почему я начал использовать это. Я создал машину с Windows 2003 Server x64 как гость, работающий под XP Pro x86, и это прекрасно, включая эффекты переключателей компилятора в приложении.NET.

Консоль VMWare является немного неуклюжей, но функциональной, и после того как она все настраивается, снова, это - бриз для использования.

Вы никогда не будете оглядываться назад.

Всего одна вещь - ожидает проводить много времени, загружая и устанавливая обновления Windows. Мое количество VM равняется 14, теперь, и обновления являются чем-то вроде faff, особенно если я восстановил один, и это возвращается путь. Один из них является бетой Windows 7, и это работает вполне прилично.

Относительно преобразования одного к другому... Вы можете в теории использовать преобразователь VMware (также свободный), чтобы впитать и виртуализировать целый физический компьютер (я сделал это однажды, и это действительно работает), и я не вижу оснований, почему это не могло быть MSVPC. Вы не можете пойти другим путем.

Я не выполняю свой нормальный рабочий стол в виртуальной машине. Я хочу, чтобы моя нормальная dev среда была максимально быстро, и производительность действительно получает настоящий удар. Я понимаю, что VMware выполняет лучше, чем MS VPC в этом отношении, но я не могу подтвердить это.

6
ответ дан 3 December 2019 в 04:54
поделиться

Я использовал VMware в течение трех лет теперь, и это действительно хорошо. Мой хост является скелетом XP64, и у меня есть разработка VM и "офис" vm, что я поднимаю одновременно. Это не помогает VM's создания с большой памятью, выделенной, по моему опыту, остается в пределе на 3 ГБ, или у Вас могла бы быть плохая производительность (YMMV).

8
ответ дан 3 December 2019 в 04:54
поделиться

Я настроил виртуальную машину на своей OS Vista и работающий xp одновременно. Его великое как некоторые приложения не работает в 64 битах (т.е. те старые приложения на 16 битов.). Можно попробовать Microsoft Virtual PC 2007 по всей вероятности самое удобное для пользователя. Это - то, что я использую. Можно попробовать Virtualbox также. Можно настроить раздел и выделить место к новой операционной системе для этого для работы. Или используйте отформатированный вторичный диск запчасти, если Вы будете иметь один и выделение, то 10 ГБ сделают соответственно, я надеялся бы.

1
ответ дан 3 December 2019 в 04:54
поделиться

Откровенно говоря, Virtualbox, вероятно, разбудит Вас и работающий с наименьшим количеством стычки, но это не поддерживает, виртуализировал SMP. Приводя это к сбою, VMware Server свободен, как ESXI (whichi s больше боли для конфигурирования, если у Вас нет некоторого опыта с ESX), и VirtualPC является пригодной к эксплуатации опцией.

Если Вы не планируете установить что-нибудь на хосте ОС, выполнить его на Сервере 2k8 с машинами Hyper-V (который дает Вам опцию собственной начальной загрузки из файлов VHD также). С моей стороны я не склонен рассматривать виртуальные машины, как будто они - мой рабочий стол. Установите то, что Вы хотите на хосте ОС и оставляете VMs для выполнения сервисов машины, выполненные прямо сейчас. В конце концов, если Вы хотели выполнить свой рабочий стол в VM, Вы, возможно, сделали это с RDP на поле ESX так или иначе.

Что касается дисков 15k? Uhh... хорошо. Я надеюсь, что они - SAS (не Velociraptors), так как Вы собираетесь хотеть много дешевой внешней памяти для снимков, изображения, которые не являются очень важной производительностью (ничто кроме SQL-серверов), и Velociraptors не имеют вполне той же надежности.

3
ответ дан 3 December 2019 в 04:54
поделиться

Microsoft Virtual PC трудно победить бесплатно. Очевидный недостаток к VMware является ценой. За и против VMware и г-жи, VPC вполне прилично обрисован в общих чертах в других ответах, но здесь является несколькими дополнительными точками:

  • Знайте, что, если Vista является Вашей серверной средой, гарантируют, что Вы выполняете Предприятие, Окончательное или Бизнес-. MS не позволяет работать VPC на Vista Home Basic или Домой Premium. VMware не ограничен этим ограничением. Это не техническое ограничение, а скорее ограничение лицензирования.
  • Запущение Ваших ежедневных приложений производительности в VM может сделать резервные копии легче, но оно действительно замедляет время начальной загрузки, поскольку необходимо загрузить хост, затем загрузить VM. Возрастающие резервные копии тверды, поскольку любое программное обеспечение для резервного копирования, работающее на хосте, видело бы диск VM как просто большой файл и не сможет видеть то, что имеет и не изменилось. Это для этого создало бы резервную копию целого блоба. Это может стать дорогостоящим с точки зрения резервного хранилища. Для возрастающих резервных копий Вы могли бы найти Снимок Диска легче: http://www.drivesnapshot.de/en/
  • Как решение для выполнения платформ тестирования, системы, которые необходимо откатывать к известному хорошему состоянию или редко используемым системам Вы просто, не могут разбить VM.

Я рекомендую начать экспериментировать с г-жой VPC для Ваших тестовых машин и привыкаю к нему. Затем можно позже решить, хотите ли Вы пойти полностью виртуализированные. Движение полностью виртуального со дня 1 могло быть болезненным, и Вы могли бы найти, что Вам жаль, что Вы не сделали его.

5
ответ дан 3 December 2019 в 04:54
поделиться

Я использую сервер открытого исходного кода VMware (Новейший свободный), и это чрезвычайно просто в использовании и установка. И это не использует столько же ресурсов, сколько некоторые из других делают.

0
ответ дан 3 December 2019 в 04:54
поделиться

Помните, что много платформ виртуализации испытывают недостаток в хорошей поддержке OpenGL/DirectX/3D. Если необходимо выполнять/тестировать те типы приложений, Вам, вероятно, придется обновить до не-бесплатной-версии.

Много раз приложения могут "выполнить" с программным обеспечением 3D эмуляцию, но производительность будет невыносима. Это - типичная проблема при использовании ускорения OpenGL для выполнения графики или анимации (такой как научное приложение) или если Вы создаете расширения 3D приложения как Проводник ArcGIS.

Лично, я не выполнил бы свою ежедневную среду на VM, поскольку я склонен использовать приложения, которые работают плохо в VM, при этом двумя крупнейшими преступниками является Поиск по компьютеру и 3D приложения. Однако, если Вы используете stanard комплект продуктов Office и не продвигаете систему всегда (диск, в особенности), затем необходимо быть в порядке.

0
ответ дан 3 December 2019 в 04:54
поделиться

Кроме того, я предложил бы изучить ESXI VMware - это - упрощенный, свободный выпуск их полного продукта ESX. Это - установка гипервизора без операционной системы, таким образом, это не собирается видеть уровень хитов производительности, которые видит размещенное решение как Параллели, Виртуальный ПК или собственный инструмент Server VMware.

Некоторое усилие требуется создать VMs, и для которого я рекомендовал бы использовать VMware Server (также свободный) инструмент для создания VMs.

После того как они создаются, они могут быть выполнены на ESXI.

0
ответ дан 3 December 2019 в 04:54
поделиться

Проверьте функцию записи/воспроизведения VMware (потрясающее демонстрационное видео здесь), который является большим для отладки. Это не включено ни в один из бесплатных продуктов, таким образом, необходимо будет выйти из оболочки для лицензии, но это определенно стоит того, полагая, что Вы также получаете довольно хорошую поддержку DirectX также.

0
ответ дан 3 December 2019 в 04:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: