/// <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); } } }
/// <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; }
/// <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; }