ArcObjects Library Reference  

AddressForm

About the Find an address Sample

[C#]

AddressForm.cs

using System;
using System.Windows.Forms;
using ESRI.ArcGIS.Geodatabase;
using ESRI.ArcGIS.Location;
using ESRI.ArcGIS.esriSystem;
using ESRI.ArcGIS.DataSourcesGDB;
using ESRI.ArcGIS.Geometry;

namespace FindAddress
{
    public partial class AddressForm : Form
    {
        private AoInitialize m_license = null;

        public AddressForm()
        {
            GetLicense();

            InitializeComponent();

            ReturnLicence();
        }

        void StateTextBox_KeyDown(object sender, KeyEventArgs e)
        {
            // pressing "enter" should do the same as clicking the button for locating
            if (e.KeyValue == 13)
                FindButton_Click(this, new System.EventArgs());
        }

        void ZipTextBox_KeyDown(object sender, KeyEventArgs e)
        {
            // pressing "enter" should do the same as clicking the button for locating
            if (e.KeyValue == 13)
                FindButton_Click(this, new System.EventArgs());
        }

        private void FindButton_Click(object sender, EventArgs e)
        {
            GeocodeAddress();
        }

        private void GeocodeAddress()
        {
            // Get the locator
            System.Object obj = Activator.CreateInstance(Type.GetTypeFromProgID("esriLocation.LocatorManager"));
            ILocatorManager2 locatorManager = obj as ILocatorManager2;
            ILocatorWorkspace locatorWorkspace = locatorManager.GetLocatorWorkspaceFromPath(@"C:\California_fgdb.gdb");
            ILocator locator = locatorWorkspace.GetLocator("California_city_state_zip_94_new");

            // Set up the address properties
            IAddressInputs addressInputs = locator as IAddressInputs;
            IFields addressFields = addressInputs.AddressFields;
            IPropertySet addressProperties = new PropertySetClass();
            addressProperties.SetProperty(addressFields.get_Field(0).Name, this.AddressTextBox.Text);
            addressProperties.SetProperty(addressFields.get_Field(1).Name, this.CityTextBox.Text);
            addressProperties.SetProperty(addressFields.get_Field(2).Name, this.StateTextBox.Text);
            addressProperties.SetProperty(addressFields.get_Field(3).Name, this.ZipTextBox.Text);

            // Match the Address
            IAddressGeocoding addressGeocoding = locator as IAddressGeocoding;
            IPropertySet resultSet = addressGeocoding.MatchAddress(addressProperties);

            // Print out the results
            object names, values;
            resultSet.GetAllProperties(out names, out values);
            string[] namesArray = names as string[];
            object[] valuesArray = values as object[];
            int length = namesArray.Length;
            IPoint point = null;
            for (int i = 0; i < length; i++)
            {
                if (namesArray[i] != "Shape")
                    this.ResultsTextBox.Text += namesArray[i] + ": " + valuesArray[i].ToString() + "\n";
                else
                {
                    if (point != null && !point.IsEmpty)
                    {
                        point = valuesArray[i] as IPoint;
                        this.ResultsTextBox.Text += "X: " + point.X + "\n";
                        this.ResultsTextBox.Text += "Y: " + point.Y + "\n";
                    }
                }
            }

            this.ResultsTextBox.Text += "\n";
        }

        private void GetLicense()
        {
            if (!ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.Desktop))
                throw new Exception("Could not set version. ");

            m_license = new AoInitializeClass();
            m_license.Initialize(esriLicenseProductCode.esriLicenseProductCodeStandard);
        }

        private void ReturnLicence()
        {
            m_license.Shutdown();
        }
    }
}

[Visual Basic .NET]

AddressForm.vb

Imports Microsoft.VisualBasic
Imports System
Imports System.Windows.Forms
Imports ESRI.ArcGIS.Geodatabase
Imports ESRI.ArcGIS.Location
Imports ESRI.ArcGIS.esriSystem
Imports ESRI.ArcGIS.Geometry

Namespace FindAddress
	Partial Public Class AddressForm
		Inherits Form
		Private m_license As AoInitialize = Nothing

		Public Sub New()
			GetLicense()

			InitializeComponent()

			ReturnLicence()
		End Sub

		Private Sub StateTextBox_KeyDown(ByVal sender As Object, ByVal e As KeyEventArgs) Handles StateTextBox.KeyDown
			' pressing "enter" should do the same as clicking the button for locating
			If e.KeyValue = 13 Then
				FindButton_Click(Me, New System.EventArgs())
			End If
		End Sub

		Private Sub ZipTextBox_KeyDown(ByVal sender As Object, ByVal e As KeyEventArgs) Handles ZipTextBox.KeyDown
			' pressing "enter" should do the same as clicking the button for locating
			If e.KeyValue = 13 Then
				FindButton_Click(Me, New System.EventArgs())
			End If
		End Sub

		Private Sub FindButton_Click(ByVal sender As Object, ByVal e As EventArgs) Handles FindButton.Click
      GeocodeAddress()
		End Sub

    Private Sub GeocodeAddress()
      ' Get the locator
      Dim obj As System.Object = Activator.CreateInstance(Type.GetTypeFromProgID("esriLocation.LocatorManager"))
      Dim locatorManager As ILocatorManager2 = TryCast(obj, ILocatorManager2)
      Dim locatorWorkspace As ILocatorWorkspace = locatorManager.GetLocatorWorkspaceFromPath("C:\locators")
      Dim locator As ILocator = locatorWorkspace.GetLocator("California_city_state_zip")

      ' Set up the address properties
      Dim addressInputs As IAddressInputs = TryCast(locator, IAddressInputs)
      Dim addressFields As IFields = addressInputs.AddressFields
      Dim addressProperties As IPropertySet = New PropertySetClass()
      addressProperties.SetProperty(addressFields.Field(0).Name, Me.AddressTextBox.Text)
      addressProperties.SetProperty(addressFields.Field(1).Name, Me.CityTextBox.Text)
      addressProperties.SetProperty(addressFields.Field(2).Name, Me.StateTextBox.Text)
      addressProperties.SetProperty(addressFields.Field(3).Name, Me.ZipTextBox.Text)

      ' Match the Address
      Dim addressGeocoding As IAddressGeocoding = TryCast(locator, IAddressGeocoding)
      Dim resultSet As IPropertySet = addressGeocoding.MatchAddress(addressProperties)

      ' Print out the results
      Dim names, values As Object
      resultSet.GetAllProperties(names, values)
      Dim namesArray() As String = TryCast(names, String())
      Dim valuesArray() As Object = TryCast(values, Object())
      Dim length As Integer = namesArray.Length
      Dim point As IPoint = Nothing
      For i As Integer = 0 To length - 1
        If namesArray(i) <> "Shape" Then
          Me.ResultsTextBox.Text += namesArray(i) & ": " & valuesArray(i).ToString() & Constants.vbLf
        Else
          If point IsNot Nothing AndAlso (Not point.IsEmpty) Then
            point = TryCast(valuesArray(i), IPoint)
            Me.ResultsTextBox.Text &= "X: " & point.X + Constants.vbLf
            Me.ResultsTextBox.Text &= "Y: " & point.Y + Constants.vbLf
          End If
        End If
      Next i

      Me.ResultsTextBox.Text += Constants.vbLf
    End Sub

		Private Sub GetLicense()
			If (Not ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.Desktop)) Then
				Throw New Exception("Could not set version. ")
			End If

			m_license = New AoInitializeClass()
			m_license.Initialize(esriLicenseProductCode.esriLicenseProductCodeStandard)
		End Sub

		Private Sub ReturnLicence()
			m_license.Shutdown()
		End Sub
	End Class
End Namespace