/// <summary>
        /// Adds a pin to the current map.
        /// </summary>
        /// <param name="pin">A pin to add.</param>
        private void AddPin(MapExPin pin)
        {
            // If map is not present
            if (this.map == null)
            {
                return;
            }

            // Create a new marker collection
            if (this.markers == null)
            {
                this.markers = new List <Marker>();
            }

            // Setup market options
            var markerOptions = new MarkerOptions();

            markerOptions.SetPosition(new LatLng(pin.Position.Latitude, pin.Position.Longitude));
            markerOptions.Anchor(0.5f, 0.5f);
            markerOptions.SetTitle(pin.Label);
            markerOptions.SetSnippet(pin.Address);
            markerOptions.InfoWindowAnchor(0.5f, 0.5f);

            // Setup marker icon
            var icon = MapExRenderer.GetResourceId(pin.Type);

            markerOptions.SetIcon(BitmapDescriptorFactory.FromResource(icon));

            // Add marker to the map
            var marker = this.map.AddMarker(markerOptions);

            this.markers.Add(marker);
            pin.InternalId = marker.Id;

            // Add event handlers
            pin.PropertyChanged += this.OnPinPropertyChanged;
        }