Maptitude GISDK Help |
Here is a complete example of object-oriented programming with the GISDK:
// CLASSES, CLASS MACROS AND OBJECT VARIABLES
// Classes and Class Macros
Class "Geocoder" (reference_layer,rule_file)
// Class initializer
Init do
if reference_layer = null then self.Layer = "Streets" else self.Layer = reference_layer
if rule_file = null then self.Rules = "caliper.rul" else self.Rules = rule_file
self.Coord = null
self.Status = null
endItem
// method: Locate - return a coordinate or null
Macro "Locate" (address,zip_code) do
self.Coord = null
self.Status = null
SetAlternateInterface("geocode_ui")
result = RunMacro("GISDK Locate Address",address,zip_code,self.Layer,null,self.Rules)
if TypeOf(result) = "array" then do
self.Coord = result_array[1]
self.Status = result_array[2]
end
Return(self.Coord)
endItem
// method: GetStatus - return the error message
Macro "GetStatus" do
return(self.Status)
endItem
endClass
// Example Usage:
Macro "Example Class Usage"
geocoder = CreateObject("Geocoder")
coord = geocoder.Locate("1172 Beacon Street","02461")
if coord = null then error_message = geocoder.GetStatus()
// This returns "Streets"
street_layer = geocoder.Layer
// This returns a run-time error because
// the class "Geocoder" does not have a variable named "Address"
address = geocoder.Address
endMacro
// INHERITANCE
Class "PointGeocoder" inherits: "Geocoder"
Macro "Locate" (address,zip_code) do
self.Coord = null
SetLayer(self.Layer)
query = "SELECT * WHERE ADDRESS = '" + address + "' & ZIP_CODE=" + zip_code
n_found = SelectByQuery("Selection","several",query,null)
if n_found > 0 then do
record_handle = GetFirstRecord(self.Layer+"|Selection",null)
self.Coord = GetPoint(rh2id(record_handle))
end
else do
self.Status = "No records matched the query: " + query
end
endItem
endClass
// Example Usage:
Macro "Example Subclass Usage"
geocoder = CreateObject("PointGeocoder","My Parcel Layer")
coord = geocoder.Locate("1172 Beacon Street","02461")
endMacro
©2025 Caliper Corporation | www.caliper.com |