When I enter just a zipcode in MapPoint, it return....

Anonymous
05-30-2002, 08:43 PM
When I enter just a zipcode in MapPoint, it returns <Zipcode>, <State>, <Country> but not the city. Is it possible to get this information somehow?

For example, I enter 46038 in MapPoint and search for it. MapPoint returns "46038, Indiana, United States". I cannot determine the city from StreetAddress object because it is set to nothing in this instance. Is there way to get the city for this zipcode? (which is Fishers in this case).

Walt Cygan
05-30-2002, 08:43 PM
I don't remember where this code originally came from (Gilles Kohl?), but here it is. It returns "Fishers area" for 46038.
<pre>
Private Sub cmdGetCity_Click()
Dim oMap As MapPointCtl.Map
Dim oCityLoc As MapPointCtl.Location

'Set the map object to the current map
Set oMap = ctlMapPoint.ActiveMap

Dim zipCode As String
zipCode = txtZip.Text

Set oCityLoc = FindCityForZipCode(zipCode, oMap)
If Not (Nothing Is oCityLoc) Then
txtCity = oCityLoc.Name
Else
txtCity = "Couldn't find city for this ZIP Code."
End If

End Sub

Function FindCityForZipCode(strZip As String, oMap As MapPointCtl.Map) As MapPointCtl.Location
Dim oZipLoc As MapPointCtl.Location
Dim oZipResults As MapPointCtl.FindResults

Set oZipResults = oMap.FindAddressResults(, , , , strZip, "USA")

' If it’s not a good match, then don’t accept it
If geoFirstResultGood = oZipResults.ResultsQuality Then
Set oZipLoc = oZipResults(1)
Else
Exit Function
End If

' Must be a match to a Post Code (US ZIP Code)
If Not (geoShowByPostal1 = oZipLoc.Type) Then
Exit Function
End If

' Go to the ZIP Code location on the map to hit test
oZipLoc.GoTo
Dim x As Integer
Dim Y As Integer
x = oMap.LocationToX(oZipLoc)
Y = oMap.LocationToY(oZipLoc)

' Find all geographic entities at that point
Dim oContext As MapPointCtl.FindResults
Set oContext = oMap.ObjectsFromPoint(x, Y)

' Return the city at that point (if any)
For Each obj In oContext
If geoShowByCity = obj.Type Then
Set FindCityForZipCode = obj
Exit Function
ElseIf geoShowByDefault = obj.Type Then
Set FindCityForZipCode = obj
End If
Next obj

End Function
</pre>


- Walt Cygan (http://www.mp2kmag.com/author.asp?id=9)

 
Web mp2kmag.com
mapforums.com