Maptitude GISDK Help

Object-Oriented Programming Example

 

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