class Condition

Description

The Condition class is a wrapper around the powerful Maptimize Query Language (MQL), it allows to easily build conditions from UI controls state.

When a condition is given to MapController#setCondition, only points matching this condition will be retrieved and displayed on the map when performing a request.

The Big Picture

In this example, points represent real estate.

var condition = new com.maptimize.Condition({ country: $("country").value })
  .appendAnd(["rooms_count > ?", parseInt($("minimum_rooms").value)])
  .appendAnd(["rooms_count < ?", parseInt($("maximum_rooms").value)]);
 if ($("with_garden").checked) {
  condition.appendAnd({ garden: true });
} else if ($("without_garden").checked) {
  condition.appendAnd({ garden: false });
}
 condition.toString();
// => 'country = "Spain" AND rooms_count > 3 AND rooms_count < 5 AND garden = true'
 // Assign the condition to the map and refresh markers and clusters.
maptimizeMap.setCondition(condition);
maptimizeMap.refresh();

Condition creation

Condition objects can be assembled in two forms : either with a JavaScript object whose properties represent points properties and expected values, or with an array containing the query string with placeholders as first element, followed by values for interpolation. Given values are sanitized to avoid query injection from user input.

Object form

The JavaScript object:

{ firstName: "Bob", single: true }

yields the following condition string:

'firstName = "Bob" AND single = true'

Array form: string interpolation

When an array is used as argument, its first element represents the query string where question marks (?) will be interpolated by values of following elements. The string "name LIKE ? AND category IN ?" expects 2 values for interpolation, hence the array will have 3 elements.

Example
new Condition(["name LIKE ? AND category IN ?", "mapti", ["geo", "web"]]).toString()
// => 'name LIKE "mapti" AND category IN ["geo", "web"]'

Escape question mark with an antislash character (\?) to insert a question mark without interpolation.

Example
new Condition(['language = ? AND title LIKE "\\?"', "en"]).toString();
// => 'language = "en" AND title LIKE "?"'

Constructor

Instance methods