/// <summary>
        /// Constructor.
        /// </summary>
        /// <param name="geocodingServiceInfo">Geocoding info from data layer.</param>
        internal GeocodingInfo(GeocodingServiceInfo geocodingServiceInfo)
        {
            Debug.Assert(geocodingServiceInfo != null);

            // Copy internal locators info.
            if (geocodingServiceInfo.InternalLocators != null)
            {
                _locators = new List <LocatorInfo>();

                foreach (SublocatorInfo sublocator in geocodingServiceInfo.InternalLocators.SublocatorInfo)
                {
                    LocatorInfo LocatorInfo = LocatorInfo.CreateLocatorInfo(sublocator);
                    _locators.Add(LocatorInfo);
                }
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Is match method belongs to locator.
        /// </summary>
        /// <param name="sublocator">Sublocator.</param>
        /// <param name="matchMethod">Match method.</param>
        /// <returns>Is match method belongs to locator.</returns>
        private static bool _IsMatchMethodBelongsToLocator(LocatorInfo sublocator, string matchMethod)
        {
            Debug.Assert(sublocator != null);
            Debug.Assert(matchMethod != null);

            bool result = sublocator.Name.Equals(matchMethod, StringComparison.OrdinalIgnoreCase) ||
                              sublocator.Title.Equals(matchMethod, StringComparison.OrdinalIgnoreCase);

            return result;
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Constructor.
        /// </summary>
        /// <param name="geocodingServiceInfo">Geocoding service info.</param>
        /// <param name="geocodeServer">Geocode server.</param>
        /// <param name="exceptionHandler">Exception handler.</param>
        internal Geocoder(GeocodingServiceInfo geocodingServiceInfo,
            AgsServer geocodeServer, IServiceExceptionHandler exceptionHandler)
        {
            Debug.Assert(exceptionHandler != null);

            _exceptionHandler = exceptionHandler;

            // Init geocoding properties.
            _propMods = new PropertySet();
            _propMods.PropertyArray = new PropertySetProperty[2];

            _propMods.PropertyArray[0] = _CreateProp("WritePercentAlongField", "TRUE");
            _propMods.PropertyArray[1] = _CreateProp("MatchIfScoresTie", "TRUE");

            _geocodingServiceInfo = geocodingServiceInfo;
            if (_geocodingServiceInfo == null)
            {
                throw new SettingsException(Properties.Resources.DefaultGeocodingInfoIsNotSet);
            }

            _geocodingServer = geocodeServer;

            // Create address fields.
            _CreateAddressFields();

            _actualGeocodingInfo = new GeocodingInfo(geocodingServiceInfo);

            _locatorsInfos = new ReadOnlyCollection<LocatorInfo>(
                _actualGeocodingInfo.Locators ?? new LocatorInfo[] { });

            foreach (var locator in _locatorsInfos)
            {
                if (!_locators.ContainsKey(locator.Name))
                {
                    _locators.Add(locator.Name, locator);
                }
            }

            var fields = _geocodingServiceInfo.FieldMappings.FieldMapping.Select(mapping =>
                (AddressPart)Enum.Parse(
                    typeof(AddressPart),
                    mapping.AddressField,
                    true));

            _defaultLocator = new LocatorInfo(
                string.Empty,
                string.Empty,
                true,
                true,
                SublocatorType.Streets,
                fields);

            // Geocoder should be initialized later.
            _inited = false;
        }