InterSystems DeepSee heatmap demo
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="UTF-8"?> | |
<Export generator="Cache" version="25"> | |
<Class name="DeepSee.EnhancedMapPortlet"> | |
<Description> | |
Portlet that displays a clickable google map. Supports 2012.2 or higher versions of Cache. | |
Improvements compared to %DeepSee.Component.Widget.map: | |
1) Polygon support. In addition to markers, this widget supports clickable colored polygons with tooltips. | |
The "coordsProperty" widget setting should be set to the name of a data source property that provides polygon coordinates. The value of this property is expected to contain one or more ordered sequences of coordinates each of which designates a closed loop. | |
Sequences are delimited by ; (semicolon). Coordinates in such a sequence are delimited by spaces, for example: 42.725042,55.257428,0 42.727162,55.270206,0 42.737196,55.27019,0 42.725042,55.257428,0 | |
Each coordinate triple consists of latitude / longitude numbers and a noWrap flag (see http://code.google.com/intl/en/apis/maps/documentation/javascript/reference.html#LatLng for details). | |
An alternative approach is to store polygon coordinates in a static js file rather than in the database. See coordsJsFile property description for details. | |
2) Configurable names of data source properties that provide marker and polygon data (latitude, longitude, color, opacity etc). | |
3) Configurable "onclick" handler for markers and polygons. Configurable "onaddpolygon" and "onaddmarker" handlers. | |
4) Drilldown capabilities. | |
5) Convenience javascript methods: createInfoWindowAtPosition(), getControl() and findWidgetByName(). | |
6) Heatmap mode for rendering markers (in this mode marker coordinates are used to render heat "points", no real markers are created).</Description> | |
<Super>%DeepSee.Component.Portlet.abstractPortlet</Super> | |
<Parameter name="INCLUDEFILES"> | |
<Default><![CDATA[script:http://maps.google.com/maps/api/js?sensor=false&libraries=visualization]]></Default> | |
</Parameter> | |
<Property name="latitude"> | |
<Description> | |
Initial latitude (as a decimal number).</Description> | |
<Type>%ZEN.Datatype.float</Type> | |
<InitialExpression>42.36</InitialExpression> | |
</Property> | |
<Property name="longitude"> | |
<Description> | |
Initial longitude (as a decimal number).</Description> | |
<Type>%ZEN.Datatype.float</Type> | |
<InitialExpression>288.92</InitialExpression> | |
</Property> | |
<Property name="zoom"> | |
<Description> | |
Initial zoom level (0 shows entire globe).</Description> | |
<Type>%ZEN.Datatype.integer</Type> | |
<InitialExpression>12</InitialExpression> | |
</Property> | |
<Property name="mapType"> | |
<Description> | |
Initial map display.</Description> | |
<Type>%ZEN.Datatype.string</Type> | |
<InitialExpression>"ROADMAP"</InitialExpression> | |
<Parameter name="VALUELIST" value=",ROADMAP,SATELLITE,HYBRID,TERRAIN"/> | |
</Property> | |
<Property name="markersDraggable"> | |
<Description> | |
If true, then the markers on this map are draggable.</Description> | |
<Type>%ZEN.Datatype.boolean</Type> | |
<InitialExpression>0</InitialExpression> | |
</Property> | |
<Property name="latitudeProperty"> | |
<Description> | |
Name of property in data source that provides the latitude value for a marker.</Description> | |
<Type>%ZEN.Datatype.string</Type> | |
</Property> | |
<Property name="longitudeProperty"> | |
<Description> | |
Name of property in data source that provides the longitude value for a marker.</Description> | |
<Type>%ZEN.Datatype.string</Type> | |
</Property> | |
<Property name="coordsProperty"> | |
<Description> | |
Name of property in data source that provides the coordinates array for a polygon.</Description> | |
<Type>%ZEN.Datatype.string</Type> | |
</Property> | |
<Property name="colorProperty"> | |
<Description> | |
Name of property in data source that provides the color of a polygon.</Description> | |
<Type>%ZEN.Datatype.string</Type> | |
</Property> | |
<Property name="onclickmarker"> | |
<Description> | |
onclickmarker event handler: if defined, this event is fired when a marker is clicked.</Description> | |
<Type>%ZEN.Datatype.eventHandler</Type> | |
</Property> | |
<Property name="onclickpolygon"> | |
<Description> | |
onclickpolygon event handler: if defined, this event is fired when a polygon is clicked.</Description> | |
<Type>%ZEN.Datatype.eventHandler</Type> | |
</Property> | |
<Property name="markerTitleProperty"> | |
<Description> | |
Name of property in data source that provides the title of a marker (used for tooltip text).</Description> | |
<Type>%ZEN.Datatype.string</Type> | |
</Property> | |
<Property name="polygonTitleProperty"> | |
<Description> | |
Name of property in data source that provides the title of a polygon (used for tooltip text).</Description> | |
<Type>%ZEN.Datatype.string</Type> | |
</Property> | |
<Property name="markerDataProperties"> | |
<Description> | |
List of properties in data source that provides data to be stored within the current marker. This data is visible from onclick event handler.</Description> | |
<Type>%ZEN.Datatype.string</Type> | |
</Property> | |
<Property name="polygonDataProperties"> | |
<Description> | |
List of properties in data source that provides data to be stored within the current polygon. This data is visible from onclick event handler.</Description> | |
<Type>%ZEN.Datatype.string</Type> | |
</Property> | |
<Property name="ondrilldown"> | |
<Description> | |
ondrilldown event handler: if defined, this event is fired from drillDown() method.</Description> | |
<Type>%ZEN.Datatype.eventHandler</Type> | |
</Property> | |
<Property name="ondrillup"> | |
<Description> | |
ondrillup event handler: if defined, this event is fired from drillUp() method.</Description> | |
<Type>%ZEN.Datatype.eventHandler</Type> | |
</Property> | |
<Property name="fillOpacityProperty"> | |
<Description> | |
Name of property in data source that provides polygon fill opacity.</Description> | |
<Type>%ZEN.Datatype.string</Type> | |
</Property> | |
<Property name="isClickableProperty"> | |
<Description> | |
Name of property in data source that provides "сlickable" attribute value for markers and polygons.</Description> | |
<Type>%ZEN.Datatype.string</Type> | |
</Property> | |
<Property name="hoverOpacity"> | |
<Description> | |
Hover opacity for clickable polygons.</Description> | |
<Type>%ZEN.Datatype.string</Type> | |
</Property> | |
<Property name="strokeOpacity"> | |
<Description> | |
Polygon stroke opacity.</Description> | |
<Type>%ZEN.Datatype.string</Type> | |
</Property> | |
<Property name="strokeWeight"> | |
<Description> | |
Polygon stroke weight.</Description> | |
<Type>%ZEN.Datatype.string</Type> | |
</Property> | |
<Property name="fillOpacity"> | |
<Description> | |
Default fillOpacity for polygons.</Description> | |
<Type>%ZEN.Datatype.string</Type> | |
</Property> | |
<Property name="markerIconProperty"> | |
<Description> | |
Name of property in data source that provides icon href for markers.</Description> | |
<Type>%ZEN.Datatype.string</Type> | |
</Property> | |
<Property name="markerIcon"> | |
<Description> | |
Default marker icon href.</Description> | |
<Type>%ZEN.Datatype.string</Type> | |
</Property> | |
<Property name="markerIconSize"> | |
<Description> | |
Marker icon size (ignored if both markerIcon and markerIconProperty are not set).</Description> | |
<Type>%ZEN.Datatype.string</Type> | |
</Property> | |
<Property name="onapplyfilters"> | |
<Description> | |
onapplyfilters event handler</Description> | |
<Type>%ZEN.Datatype.eventHandler</Type> | |
</Property> | |
<Property name="onaddpolygon"> | |
<Description> | |
onaddpolygon event handler</Description> | |
<Type>%ZEN.Datatype.eventHandler</Type> | |
</Property> | |
<Property name="onaddmarker"> | |
<Description> | |
onaddmarker event handler</Description> | |
<Type>%ZEN.Datatype.eventHandler</Type> | |
</Property> | |
<Property name="coordsJsFile"> | |
<Description><![CDATA[ | |
JS file containing "function loadCoordinates(polygonCoordsArray) {}" that populates a polygon coordinates associative array. | |
If <var>coordsJsFile</var> is specified then <var>coordsProperty</var> must contain name of the property that provides keys for the coordinates associative array.]]></Description> | |
<Type>%ZEN.Datatype.string</Type> | |
</Property> | |
<Property name="drillUpButtonPosition"> | |
<Description><![CDATA[ | |
Where "<< Back" button is located]]></Description> | |
<Type>%ZEN.Datatype.string</Type> | |
<InitialExpression>"top"</InitialExpression> | |
<Parameter name="VALUELIST" value="top,bottom"/> | |
</Property> | |
<Property name="markersAsHeatmap"> | |
<Description> | |
Use markers coordinates to render a heatmap</Description> | |
<Type>%ZEN.Datatype.boolean</Type> | |
<InitialExpression>0</InitialExpression> | |
</Property> | |
<Property name="onrender"> | |
<Description> | |
onrender</Description> | |
<Type>%ZEN.Datatype.eventHandler</Type> | |
</Property> | |
<Property name="colorClientProperty"> | |
<Description> | |
Name of property in data source that provides values for client-side calculation of polygon colors.</Description> | |
<Type>%ZEN.Datatype.string</Type> | |
</Property> | |
<Property name="colorFormula"> | |
<Description> | |
Formula that is used during client-side calculation of polygon colors. Only "rgb(...)" and "hsl(...)" functions are supported a the top level. Formula examples: rgb(x*x, 255 - x/10, x+x*32), hsl((255-x)/255 * 120, 100%, 50%).</Description> | |
<Type>%ZEN.Datatype.string</Type> | |
</Property> | |
<Method name="%OnGetPortletName"> | |
<ClassMethod>1</ClassMethod> | |
<ReturnType>%String</ReturnType> | |
<Implementation><![CDATA[ quit "Extended Map" | |
]]></Implementation> | |
</Method> | |
<Method name="%OnGetPortletIcon"> | |
<ClassMethod>1</ClassMethod> | |
<ReturnType>%String</ReturnType> | |
<Implementation><![CDATA[ quit "deepsee/world_48.gif" | |
]]></Implementation> | |
</Method> | |
<Method name="%OnGetPortletSettings"> | |
<ClassMethod>1</ClassMethod> | |
<FormalSpec>*pInfo:%List</FormalSpec> | |
<ReturnType>%Status</ReturnType> | |
<Implementation><![CDATA[ | |
kill pInfo | |
// $LB(name,value,type,caption,title) | |
set tTypeList = "ENUM^"_$$$Text("Roadmap","%DeepSee")_":ROADMAP,"_ | |
$$$Text("Satellite","%DeepSee")_":SATELLITE,"_ | |
$$$Text("Hybrid","%DeepSee")_":HYBRID,"_ | |
$$$Text("Terrain","%DeepSee")_":TERRAIN" | |
set pInfo($I(pInfo)) = $LB("mapType","",tTypeList,$$$Text("Map Type","%DeepSee"),$$$Text("Initial display type for the map","%DeepSee")) | |
set pInfo($I(pInfo)) = $LB("zoom",12,"%Integer",$$$Text("Zoom","%DeepSee"),$$$Text("Initial zoom level for the map","%DeepSee")) | |
set pInfo($I(pInfo)) = $LB("latitude",55.74,"%Number",$$$Text("Starting latitude","%DeepSee"),$$$Text("Initial latitude for the map","%DeepSee")) | |
set pInfo($I(pInfo)) = $LB("longitude",37.6,"%Number",$$$Text("Starting longitude","%DeepSee"),$$$Text("Initial longitude for the map","%DeepSee")) | |
set pInfo($I(pInfo)) = $LB("onclickmarker","","%ZEN.Datatype.eventHandler","'onclickmarker' event handler","User callback for onclickmarker event") | |
set pInfo($I(pInfo)) = $LB("markersdraggable",1,"%Boolean","Draggable markers?","Toggle markers drag'n'drop.") | |
set pInfo($I(pInfo)) = $LB("latitudeProperty","","%ZEN.Datatype.string","Latitude property","Latitude property for markers") | |
set pInfo($I(pInfo)) = $LB("longitudeProperty","","%ZEN.Datatype.string","Longitude property","Longitude property for markers") | |
set pInfo($I(pInfo)) = $LB("markerTitleProperty","","%ZEN.Datatype.string","Marker title property","Title property for markers") | |
set pInfo($I(pInfo)) = $LB("markerDataProperties","","%ZEN.Datatype.string","Marker data properties","List of data properties for markers") | |
set pInfo($I(pInfo)) = $LB("markerIconProperty","","%ZEN.Datatype.string","Marker icon property","Marker icon property") | |
set pInfo($I(pInfo)) = $LB("markerIcon","","%ZEN.Datatype.string","Marker icon","Default marker icon") | |
set pInfo($I(pInfo)) = $LB("markerIconSize","","%ZEN.Datatype.string","Marker icon size","Default marker icon size (ingored if Marker icon is not set)") | |
set pInfo($I(pInfo)) = $LB("coordsJsFile","","%ZEN.Datatype.string","JS file with coords","JS file with javascript 'function loadCoordinates(polygonCoordsArray) {...}' that populates polygonCoordsArray argument with polygon coordinates keyed by values from the data source property specified in 'Polygon coords property' setting.") | |
set pInfo($I(pInfo)) = $LB("coordsProperty","","%ZEN.Datatype.string","Polygon coords property","Data source property that provides coordinates for polygons if 'JS file with coords' is not specified. Otherwise this setting should contain name of data source property that provides keys for associative array which is populated by javascript code in 'JS file with coords'.") | |
set pInfo($I(pInfo)) = $LB("onclickpolygon","","%ZEN.Datatype.eventHandler","'onclickpolygon' event handler","User callback for onclickpolygon event") | |
set pInfo($I(pInfo)) = $LB("colorProperty","","%ZEN.Datatype.string","Polygon сolor property","Color property for polygons") | |
set pInfo($I(pInfo)) = $LB("polygonTitleProperty","","%ZEN.Datatype.string","Polygon title property","Title property for polygons") | |
set pInfo($I(pInfo)) = $LB("polygonDataProperties","","%ZEN.Datatype.string","Polygon data properties","List of data properties for polygons") | |
set pInfo($I(pInfo)) = $LB("fillOpacityProperty","","%ZEN.Datatype.string","Fill opacity property","Fill opacity property for polygons") | |
set pInfo($I(pInfo)) = $LB("isClickableProperty","","%ZEN.Datatype.string","IsClickable flag property","IsClickable flag property for polygons") | |
set pInfo($I(pInfo)) = $LB("fillOpacity","","%ZEN.Datatype.string","Fill opacity","Default fill opacity for polygons") | |
set pInfo($I(pInfo)) = $LB("hoverOpacity","","%ZEN.Datatype.string","Hover opacity","Hover opacity for clickable polygons") | |
set pInfo($I(pInfo)) = $LB("strokeOpacity","","%ZEN.Datatype.string","Stroke opacity","Stroke opacity for polygons") | |
set pInfo($I(pInfo)) = $LB("strokeWeight","","%ZEN.Datatype.string","Stroke weight","Stroke weight for polygons") | |
set pInfo($I(pInfo)) = $LB("drillUpButtonPosition","top","ENUM^top,bottom","Drill-up button position","Where ""<< Back"" button is located") | |
set pInfo($I(pInfo)) = $LB("ondrilldown","","%ZEN.Datatype.eventHandler","'ondrilldown' event handler","User callback for ondrilldown event") | |
set pInfo($I(pInfo)) = $LB("ondrillup","","%ZEN.Datatype.eventHandler","'ondrillup' event handler","User callback for ondrillup event") | |
set pInfo($I(pInfo)) = $LB("onapplyfilters","","%ZEN.Datatype.eventHandler","'onapplyfilters' event handler","User callback for onapplyfilters event") | |
set pInfo($I(pInfo)) = $LB("onaddpolygon","","%ZEN.Datatype.eventHandler","'onaddpolygon' event handler","User callback for onaddpolygon event") | |
set pInfo($I(pInfo)) = $LB("onaddmarker","","%ZEN.Datatype.eventHandler","'onaddmarker' event handler","User callback for onaddmarker event") | |
set pInfo($I(pInfo)) = $LB("onrender","","%ZEN.Datatype.eventHandler","'onrender' event handler","User callback for onrender event") | |
set pInfo($I(pInfo)) = $LB("markersAsHeatmap",0,"%Boolean","Heatmap mode","Toggle heatmap mode for rendering markers.") | |
set pInfo($I(pInfo)) = $LB("colorClientProperty","","%ZEN.Datatype.string","Property for client-side polygon color calculation","Property for client-side polygon color calculation") | |
set pInfo($I(pInfo)) = $LB("colorFormula","","%ZEN.Datatype.string","Formula for client-side polygon color calculation","Formula for client-side polygon color calculation") | |
quit $$$OK | |
]]></Implementation> | |
</Method> | |
<Method name="renderContents"> | |
<Description> | |
Client-side method to render control.</Description> | |
<Language>javascript</Language> | |
<ClientMethod>1</ClientMethod> | |
<Implementation><![CDATA[ | |
this._mapObject = null; | |
var mapDiv = this.getEnclosingDiv(); | |
// test if we have not been rendered yet | |
if (mapDiv == null) return; | |
// make sure our div has some area | |
var width = isNaN(parseFloat(this.width)) ? 200 : parseFloat(this.width); | |
var height = isNaN(parseFloat(this.height)) ? 200 : parseFloat(this.height); | |
if ('' == this.enclosingStyle) { | |
mapDiv.style.width = width + 'px'; | |
mapDiv.style.height = height + 'px'; | |
} | |
// get data from controller, if present. | |
this.acquireData(); | |
// create map | |
this.initMap(mapDiv); | |
// add markers | |
this.syncMarkers(); | |
// add polygons | |
this.syncPolygons(); | |
// call onrendder | |
zenInvokeCallbackMethod(this.onrender,this,'onrender'); | |
]]></Implementation> | |
</Method> | |
<Method name="initMap"> | |
<Description> | |
Initialize the map</Description> | |
<FormalSpec>mapDiv</FormalSpec> | |
<Language>javascript</Language> | |
<ClientMethod>1</ClientMethod> | |
<Implementation><![CDATA[ | |
if (('undefined' == typeof google)||('undefined' == typeof google.maps)) { | |
mapDiv.innerHTML = $$$Text('Unable to load google map api.'); | |
return; | |
} | |
var mapTypeId = this.getMapTypeId(this.mapType); | |
this.latitude = parseFloat(this.latitude); | |
if (isNaN(this.latitude)) this.latitude = 42.36; | |
this.longitude = parseFloat(this.longitude); | |
if (isNaN(this.longitude)) this.longitude = 288.92; | |
var mapLatlng = new google.maps.LatLng(this.latitude, this.longitude); | |
this.zoom = parseInt(this.zoom, 10); | |
if (isNaN(this.zoom)) this.zoom = 0; | |
var mapOptions = { | |
zoom: this.zoom, | |
center: mapLatlng, | |
mapTypeId: mapTypeId | |
} | |
var map = new google.maps.Map(mapDiv, mapOptions); | |
this._mapObject = map; | |
// array of markers | |
this._markers = []; | |
// array of polygons | |
this._polygons = []; | |
// drilldown arrays | |
this._prevZoom = []; | |
this._prevCenter = []; | |
this._drillDownTitle = []; | |
// add listeners | |
var code = new Function('zenPage.getComponent('+this.index+').zoomChangedHandler();'); | |
google.maps.event.addListener(map, 'zoom_changed', code); | |
var code = new Function('zenPage.getComponent('+this.index+').dragendHandler();'); | |
google.maps.event.addListener(map, 'dragend', code); | |
var code = new Function('zenPage.getComponent('+this.index+').centerChangedHandler();'); | |
google.maps.event.addListener(map, 'center_changed', code); | |
]]></Implementation> | |
</Method> | |
<Method name="zoomChangedHandler"> | |
<Description> | |
Callback for zoom-changed event.</Description> | |
<Internal>1</Internal> | |
<Language>javascript</Language> | |
<ClientMethod>1</ClientMethod> | |
<Implementation><![CDATA[ | |
var map = this.getMapObject(); | |
if (map) { | |
this.zoom = map.getZoom(); | |
} | |
]]></Implementation> | |
</Method> | |
<Method name="dragendHandler"> | |
<Description> | |
Callback for map dragend event.</Description> | |
<Internal>1</Internal> | |
<Language>javascript</Language> | |
<ClientMethod>1</ClientMethod> | |
<Implementation><![CDATA[ | |
var map = this.getMapObject(); | |
if (map) { | |
var latLng = map.getCenter(); | |
this.latitude = latLng.lat(); | |
this.longitude = latLng.lng(); | |
} | |
]]></Implementation> | |
</Method> | |
<Method name="getMapObject"> | |
<Description> | |
Return the google map API object used by the map view.</Description> | |
<Language>javascript</Language> | |
<ClientMethod>1</ClientMethod> | |
<Implementation><![CDATA[ return this._mapObject; | |
]]></Implementation> | |
</Method> | |
<Method name="getMapTypeId"> | |
<Description> | |
Given the name of a map type, convert to a map type id.</Description> | |
<FormalSpec>type</FormalSpec> | |
<Language>javascript</Language> | |
<ClientMethod>1</ClientMethod> | |
<Implementation><![CDATA[ | |
if (('undefined' == typeof google)||('undefined' == typeof google.maps)) { | |
return ''; | |
} | |
var mapType = google.maps.MapTypeId.ROADMAP; | |
switch (type) { | |
case 'HYBRID': | |
mapType = google.maps.MapTypeId.HYBRID; | |
break; | |
case 'SATELLITE': | |
mapType = google.maps.MapTypeId.SATELLITE; | |
break; | |
case 'TERRAIN': | |
mapType = google.maps.MapTypeId.TERRAIN; | |
break; | |
case 'ROADMAP': | |
default: | |
break; | |
} | |
return mapType; | |
]]></Implementation> | |
</Method> | |
<Method name="setProperty"> | |
<Description> | |
Set the value of a named property.</Description> | |
<FormalSpec>property,value,value2</FormalSpec> | |
<Language>javascript</Language> | |
<ClientMethod>1</ClientMethod> | |
<Implementation><![CDATA[ | |
var map = this.getMapObject(); | |
switch(property) { | |
case 'latitude': | |
case 'longitude': | |
this[property] = value; | |
if (map) { | |
var mapLatlng = new google.maps.LatLng(parseFloat(this.latitude), parseFloat(this.longitude)); | |
map.panTo(mapLatlng); | |
} | |
break; | |
case 'zoom': | |
this[property] = value; | |
if (map) { | |
map.setZoom(parseInt(this.zoom,10)); | |
} | |
break; | |
case 'mapType': | |
this[property] = value; | |
if (map) { | |
var mapTypeId = this.getMapTypeId(this.mapType); | |
map.setMapTypeId(mapTypeId); | |
} | |
break; | |
default: | |
return this.invokeSuper('setProperty',arguments); | |
} | |
return true; | |
]]></Implementation> | |
</Method> | |
<Method name="notifyViewHandler"> | |
<Description> | |
Notification that the dataController associated with this dataView has raised an event.</Description> | |
<FormalSpec>reason,data1,data2,data3</FormalSpec> | |
<Language>javascript</Language> | |
<ClientMethod>1</ClientMethod> | |
<Implementation><![CDATA[ | |
switch(reason) { | |
case 'dataChange': | |
this.onApplyFilters(true); | |
case 'modelChange': | |
// some change in dataController | |
this.acquireData(); | |
this.syncMarkers(); | |
this.syncPolygons(); | |
break; | |
case 'seriesChange': | |
break; | |
} | |
]]></Implementation> | |
</Method> | |
<Method name="addMarker"> | |
<Description><![CDATA[ | |
Add a marker to the map at given coordinates.<br/> | |
<var>id</var> is a user-defined identifier associated with the marker.<br/> | |
Returns the marker object.]]></Description> | |
<FormalSpec>id,latitude,longitude,title,isClickable,icon,data</FormalSpec> | |
<Language>javascript</Language> | |
<ClientMethod>1</ClientMethod> | |
<Implementation><![CDATA[ | |
var marker = null; | |
var map = this.getMapObject(); | |
if (map && !isNaN(parseFloat(latitude)) && !isNaN(parseFloat(longitude))) { | |
var mapLatlng = new google.maps.LatLng(parseFloat(latitude), parseFloat(longitude)); | |
marker = new google.maps.Marker({ | |
position: mapLatlng, | |
map: map, | |
draggable: this.markersDraggable, | |
title:title, | |
clickable: (isClickable == 1), | |
icon: (icon ? (this.markerIconSize ? new google.maps.MarkerImage(icon, null, null, null, new google.maps.Size(this.markerIconSize, this.markerIconSize)) : icon) : null), | |
data: data}); | |
// add to list | |
marker._id = id; | |
var index = this._markers.length; | |
this._markers[index] = marker; | |
// add event handler(s) | |
if (this.markersDraggable) { | |
var code = new Function('zenPage.getComponent('+this.index+').markerDragEndHandler("'+index+'");'); | |
google.maps.event.addListener(marker, 'dragend', code); | |
} | |
var code = new Function('zenPage.getComponent('+this.index+').markerClickHandler("'+index+'");'); | |
google.maps.event.addListener(marker, 'click', code); | |
} | |
return marker; | |
]]></Implementation> | |
</Method> | |
<Method name="addPolygon"> | |
<Description><![CDATA[ | |
Add a polygon to the map at given coordinates.<br/> | |
<var>id</var> is a user-defined identifier associated with the polygon.<br/> | |
Returns the polygon object.]]></Description> | |
<FormalSpec>id,coords,color,fo,isClickable,title,data</FormalSpec> | |
<Language>javascript</Language> | |
<ClientMethod>1</ClientMethod> | |
<Implementation><![CDATA[ | |
var polygon = null; | |
var map = this.getMapObject(); | |
if (map) | |
{ | |
if (color.substring(0, 4) === "rgb(" && color.indexOf(")") == (color.length - 1) && color.indexOf(".") > -1) | |
{ | |
var colorAr = color.substring(4, color.length - 1).split(","); | |
color = "rgb(" + String(parseFloat(colorAr[0])).split(".")[0] + "," + String(parseFloat(colorAr[1])).split(".")[0] + "," + String(parseFloat(colorAr[2])).split(".")[0] + ")"; | |
} | |
polygon = new google.maps.Polygon({ | |
tooltip: '', | |
title: title, | |
fillColor: (color.substring(0, "hsv2rgb".length) === "hsv2rgb" ? eval(color) : color), | |
fillOpacity: fo, | |
clickable: (isClickable == 1), | |
strokeColor: (color.substring(0, "hsv2rgb".length) === "hsv2rgb" ? eval(color) : color), | |
strokeOpacity: (this.strokeOpacity ? this.strokeOpacity : 0.5), | |
strokeWeight: (this.strokeWeight ? this.strokeWeight : 3), | |
paths: coords, | |
map: map, | |
data: data, | |
defaultFO: fo}); | |
// add to list | |
polygon._id = id; | |
var index = this._polygons.length; | |
this._polygons[index] = polygon; | |
var code = new Function('event', 'zenPage.getComponent('+this.index+').polygonClickHandler("'+index+'", event);'); | |
google.maps.event.addListener(polygon, 'click', code); | |
code = new Function('event', 'zenPage.getComponent('+this.index+').polygonMouseOver("'+index+'", event);'); | |
google.maps.event.addListener(polygon, 'mouseover', code); | |
code = new Function('event', 'zenPage.getComponent('+this.index+').polygonMouseMove("'+index+'", event);'); | |
google.maps.event.addListener(polygon, 'mousemove', code); | |
code = new Function('event', 'zenPage.getComponent('+this.index+').polygonMouseOut("'+index+'", event);'); | |
google.maps.event.addListener(polygon, 'mouseout', code); | |
} | |
return polygon; | |
]]></Implementation> | |
</Method> | |
<Method name="polygonMouseOver"> | |
<Internal>1</Internal> | |
<FormalSpec>index,event</FormalSpec> | |
<Language>javascript</Language> | |
<ClientMethod>1</ClientMethod> | |
<Implementation><![CDATA[ | |
var map = this.getMapObject(); | |
if (map) { | |
var polygon = this.getPolygon(index); | |
if (polygon && polygon.clickable) polygon.setOptions({fillOpacity: (this.hoverOpacity ? this.hoverOpacity : 0.35)}); | |
} | |
]]></Implementation> | |
</Method> | |
<Method name="polygonMouseMove"> | |
<Internal>1</Internal> | |
<FormalSpec>index,event</FormalSpec> | |
<Language>javascript</Language> | |
<ClientMethod>1</ClientMethod> | |
<Implementation><![CDATA[ | |
var map = this.getMapObject(); | |
if (map) { | |
var polygon = this.getPolygon(index); | |
if (polygon && polygon.tooltip) | |
{ | |
clearTimeout(polygon.tooltipTimer); | |
polygon.tooltipTimer = setTimeout('zenPage.getComponent('+this.index+').polygonTooltipTimer('+index+',' + event.latLng.lat() + ',' + event.latLng.lng() + ');', 500); | |
} | |
} | |
]]></Implementation> | |
</Method> | |
<Method name="polygonTooltipTimer"> | |
<Internal>1</Internal> | |
<FormalSpec>index,lat,lng</FormalSpec> | |
<Language>javascript</Language> | |
<ClientMethod>1</ClientMethod> | |
<Implementation><![CDATA[ | |
var map = this.getMapObject(); | |
if (map) { | |
var polygon = this.getPolygon(index); | |
if (polygon && polygon.tooltip) polygon.tooltip.show(new google.maps.LatLng(lat, lng)); | |
} | |
]]></Implementation> | |
</Method> | |
<Method name="polygonMouseOut"> | |
<Internal>1</Internal> | |
<FormalSpec>index,event</FormalSpec> | |
<Language>javascript</Language> | |
<ClientMethod>1</ClientMethod> | |
<Implementation><![CDATA[ | |
var map = this.getMapObject(); | |
if (map) { | |
var polygon = this.getPolygon(index); | |
if (polygon) | |
{ | |
if (polygon.clickable) polygon.setOptions({fillOpacity: polygon.defaultFO}); | |
if (polygon.tooltip) | |
{ | |
polygon.tooltip.hide(); | |
clearTimeout(polygon.tooltipTimer); | |
} | |
} | |
} | |
]]></Implementation> | |
</Method> | |
<Method name="polygonClickHandler"> | |
<Internal>1</Internal> | |
<FormalSpec>index,event</FormalSpec> | |
<Language>javascript</Language> | |
<ClientMethod>1</ClientMethod> | |
<Implementation><![CDATA[ | |
var map = this.getMapObject(); | |
if (map) { | |
var polygon = this.getPolygon(index); | |
if (polygon) { | |
if (polygon.tooltip) | |
{ | |
polygon.tooltip.hide(); | |
clearTimeout(polygon.tooltipTimer); | |
} | |
zenInvokeCallbackMethod(this.onclickpolygon,this,'onclickpolygon','polygon',polygon,'position',event.latLng); | |
} | |
} | |
]]></Implementation> | |
</Method> | |
<Method name="getMarker"> | |
<Description> | |
Find marker in marker list by index # (0-based).</Description> | |
<Internal>1</Internal> | |
<FormalSpec>index</FormalSpec> | |
<Language>javascript</Language> | |
<ClientMethod>1</ClientMethod> | |
<Implementation><![CDATA[ return this._markers ? this._markers[index] : null; | |
]]></Implementation> | |
</Method> | |
<Method name="getPolygon"> | |
<Description> | |
Find polygon in polygon list by index # (0-based).</Description> | |
<Internal>1</Internal> | |
<FormalSpec>index</FormalSpec> | |
<Language>javascript</Language> | |
<ClientMethod>1</ClientMethod> | |
<Implementation><![CDATA[ return this._polygons ? this._polygons[index] : null; | |
]]></Implementation> | |
</Method> | |
<Method name="markerDragEndHandler"> | |
<Description> | |
Callback for marker dragend event.</Description> | |
<Internal>1</Internal> | |
<FormalSpec>index</FormalSpec> | |
<Language>javascript</Language> | |
<ClientMethod>1</ClientMethod> | |
<Implementation><![CDATA[ | |
var map = this.getMapObject(); | |
if (map) { | |
var marker = this.getMarker(index); | |
if (marker) { | |
this.createInfoWindow(marker,'Marker moved to:<br/>' + marker.getPosition()); | |
} | |
} | |
]]></Implementation> | |
</Method> | |
<Method name="markerClickHandler"> | |
<Description> | |
Callback for marker click event.</Description> | |
<Internal>1</Internal> | |
<FormalSpec>index</FormalSpec> | |
<Language>javascript</Language> | |
<ClientMethod>1</ClientMethod> | |
<Implementation><![CDATA[ | |
var map = this.getMapObject(); | |
if (map) { | |
var marker = this.getMarker(index); | |
if (marker) { | |
zenInvokeCallbackMethod(this.onclickmarker,this,'onclickmarker','marker',marker); | |
} | |
} | |
]]></Implementation> | |
</Method> | |
<Method name="createInfoWindow"> | |
<Description> | |
Create and show an info window for a given marker.</Description> | |
<Internal>1</Internal> | |
<FormalSpec>marker,content</FormalSpec> | |
<Language>javascript</Language> | |
<ClientMethod>1</ClientMethod> | |
<Implementation><![CDATA[ | |
var map = this.getMapObject(); | |
if (map && marker) { | |
var infoWindow = new google.maps.InfoWindow({content: content}); | |
infoWindow.open(map,marker); | |
return infoWindow; | |
} | |
else | |
{ | |
return null; | |
} | |
]]></Implementation> | |
</Method> | |
<Method name="createInfoWindowAtPosition"> | |
<Description> | |
Create and show an info window at the specified position.</Description> | |
<FormalSpec>position,content</FormalSpec> | |
<Language>javascript</Language> | |
<ClientMethod>1</ClientMethod> | |
<Implementation><![CDATA[ | |
var map = this.getMapObject(); | |
if (map && position) { | |
var infoWindow = new google.maps.InfoWindow({content: content}); | |
//infoWindow.position = position; | |
infoWindow.setPosition(position); | |
infoWindow.open(map); | |
return infoWindow; | |
} | |
else | |
{ | |
return null; | |
} | |
]]></Implementation> | |
</Method> | |
<Method name="removeMarker"> | |
<Description><![CDATA[ | |
Remove a marker from the map. | |
<var>marker</var> is the marker to remove.]]></Description> | |
<FormalSpec>marker</FormalSpec> | |
<Language>javascript</Language> | |
<ClientMethod>1</ClientMethod> | |
<Implementation><![CDATA[ | |
try { | |
marker.setMap(null); | |
} | |
catch(ex) { | |
// swallow google error! | |
} | |
]]></Implementation> | |
</Method> | |
<Method name="removePolygon"> | |
<Description><![CDATA[ | |
Remove a polygon from the map. | |
<var>polygon</var> is the polygon to remove.]]></Description> | |
<FormalSpec>polygon</FormalSpec> | |
<Language>javascript</Language> | |
<ClientMethod>1</ClientMethod> | |
<Implementation><![CDATA[ | |
try { | |
if (polygon.tooltip) polygon.tooltip.setMap(null); | |
polygon.setMap(null); | |
} | |
catch(ex) { | |
// swallow google error! | |
} | |
]]></Implementation> | |
</Method> | |
<Method name="acquireData"> | |
<Description> | |
Internal method: acquire data for this view and store a copy in a local cache.</Description> | |
<Internal>1</Internal> | |
<Language>javascript</Language> | |
<ClientMethod>1</ClientMethod> | |
<Implementation><![CDATA[ | |
var controller = this.getController(); | |
if (null == controller) { | |
// try to connect to dataController | |
this.connectToController(); | |
controller = this.getController(); | |
} | |
// array of marker data | |
this._markerData = []; | |
if (controller && (this.latitudeProperty != '') && (this.longitudeProperty != '')) | |
{ | |
// get data from controller (make sure data is loaded) | |
var dims = controller.getDimensions(); | |
// are we connected to a pivot table? | |
var invert = controller.getSelectedRange; | |
if (!invert) { | |
var seriesSize = controller.getDimSize(1); | |
var seriesCount = controller.getDimSize(2); | |
var labelDim = 2; | |
var titleCol = -1; | |
var latCol = -1; | |
var longCol = -1; | |
var clickableCol = -1; | |
var miCol = -1; | |
} | |
else { | |
var seriesSize = controller.getDimSize(2); | |
var seriesCount = controller.getDimSize(1); | |
var labelDim = 1; | |
} | |
if (seriesCount > 0) | |
{ | |
// find long and lat and title columns | |
if (!invert) | |
for (var p = 0; p < seriesSize; p++) | |
{ | |
var pname = controller.getPropertyName(p); | |
if (pname == this.latitudeProperty) { | |
latCol = p; | |
} | |
if (pname == this.longitudeProperty) { | |
longCol = p; | |
} | |
if (pname == this.markerTitleProperty) { | |
titleCol = p; | |
} | |
if (pname == this.isClickableProperty) { | |
clickableCol = p; | |
} | |
if (pname == this.markerIconProperty) { | |
miCol = p; | |
} | |
} | |
// each series corresponds to a marker | |
if (invert || (latCol >= 0 && longCol >= 0)) | |
for (var n = 0; n < seriesCount; n++) | |
{ | |
var isClickable = 1; | |
var mi = null; | |
var sname = controller.getLabel(n,labelDim); | |
if (!invert) { | |
var lat = controller.getData(latCol,n); | |
var long = controller.getData(longCol,n); | |
if (titleCol >= 0) sname = controller.getData(titleCol,n); | |
if (clickableCol >= 0) isClickable = controller.getData(clickableCol,n); | |
if (miCol >= 0) mi = controller.getData(miCol,n); | |
} | |
else { | |
var lat = controller.getDataByName(this.latitudeProperty,n); | |
var long = controller.getDataByName(this.longitudeProperty,n); | |
if (this.markerTitleProperty != '') sname = controller.getDataByName(this.markerTitleProperty,n); | |
if (this.isClickableProperty != '') isClickable = controller.getDataByName(this.isClickableProperty,n); | |
if (this.markerIconProperty != '') mi = controller.getDataByName(this.markerIconProperty,n); | |
} | |
if (!isNaN(parseFloat(lat)) && !isNaN(parseFloat(long))) { | |
var data = []; | |
if (this.markerDataProperties != '') | |
{ | |
var props = this.markerDataProperties.split(","); | |
for (var i = 0; i < props.length; i++) { | |
data[props[i]] = controller.getDataByName(props[i],n); | |
} | |
} | |
if (!mi) mi = this.markerIcon; | |
if (this.markersAsHeatmap) | |
{ | |
this._markerData[this._markerData.length] = new google.maps.LatLng(lat, long); | |
} | |
else | |
{ | |
this._markerData[this._markerData.length] = { | |
title: sname, | |
latitude: lat, | |
longitude: long, | |
isClickable: (!isClickable ? 1 : isClickable), | |
icon: mi, | |
data: data | |
}; | |
} | |
} | |
} | |
} | |
} | |
// array of polygon data | |
this._polygonData = []; | |
if (this.coordsJsFile && !this._polygonCoords) | |
{ | |
this._polygonCoords = []; | |
loadCoordinates(this._polygonCoords); | |
} | |
if (controller && (this.coordsProperty != '')) | |
{ | |
// get data from controller (make sure data is loaded) | |
var dims = controller.getDimensions(); | |
// are we connected to a pivot table? | |
var invert = controller.getSelectedRange; | |
if (!invert) { | |
// not a pivot | |
var seriesSize = controller.getDimSize(1); | |
var seriesCount = controller.getDimSize(2); | |
var labelDim = 2; | |
var titleCol = -1; | |
var coordsCol = -1; | |
var colorCol = -1; | |
var foCol = -1; | |
var clickableCol = -1; | |
} | |
else { | |
var seriesSize = controller.getDimSize(2); | |
var seriesCount = controller.getDimSize(1); | |
var labelDim = 1; | |
} | |
if (seriesCount > 0) | |
{ | |
// find coords and color columns | |
if (!invert) | |
for (var p = 0; p < seriesSize; p++) | |
{ | |
var pname = controller.getPropertyName(p); | |
if (pname == this.coordsProperty) { | |
coordsCol = p; | |
} | |
if (pname == this.colorProperty) { | |
colorCol = p; | |
} | |
if (pname == this.fillOpacityProperty) { | |
foCol = p; | |
} | |
if (pname == this.isClickableProperty) { | |
clickableCol = p; | |
} | |
if (pname == this.polygonTitleProperty) { | |
titleCol = p; | |
} | |
} | |
// if we have a pivot and non-empty ..colorClientProperty, then find out min and max values in that property | |
if (invert && (this.colorClientProperty != '')) | |
{ | |
var minColorVal = controller.getDataByName(this.colorClientProperty, 0); | |
var maxColorVal = minColorVal; | |
var currColorVal; | |
for (var n = 1; n < seriesCount; n++) | |
{ | |
currColorVal = controller.getDataByName(this.colorClientProperty, n); | |
if (currColorVal > maxColorVal) { | |
maxColorVal = currColorVal; | |
} else if (currColorVal < minColorVal) { | |
minColorVal = currColorVal; | |
} | |
} | |
} | |
// each series corresponds to a poly | |
for (var n = 0; n < seriesCount; n++) | |
{ | |
var color = 'purple'; | |
var fo = this.fillOpacity; // default opacity | |
var isClickable = 1; | |
var sname = controller.getLabel(n,labelDim); | |
if (!invert) { | |
if (coordsCol<0) break; | |
var coords = controller.getData(coordsCol,n); | |
if (colorCol >= 0) color = controller.getData(colorCol,n); | |
if (foCol >= 0) fo = controller.getData(foCol,n); | |
if (clickableCol >= 0) isClickable = controller.getData(clickableCol,n); | |
if (titleCol >= 0) sname = controller.getData(titleCol,n); | |
} | |
else { | |
var coords = controller.getDataByName(this.coordsProperty,n); | |
if (this.colorProperty != '') color = controller.getDataByName(this.colorProperty,n); | |
if (this.fillOpacityProperty != '') fo = controller.getDataByName(this.fillOpacityProperty,n); | |
if (this.isClickableProperty != '') isClickable = controller.getDataByName(this.isClickableProperty,n); | |
if (this.polygonTitleProperty != '') sname = controller.getDataByName(this.polygonTitleProperty,n); | |
} | |
// a special case: we have a pivot and non-empty ..colorClientProperty | |
if (invert && (this.colorClientProperty != '') && (maxColorVal > minColorVal)) | |
{ | |
var currColorVal = controller.getDataByName(this.colorClientProperty, n); | |
var value = ((currColorVal - minColorVal) * 255) / (maxColorVal - minColorVal); | |
var f = "rgb(x, 255-x, 0)"; | |
if (this.colorFormula != '') f = this.colorFormula; | |
var fidx = f.indexOf("("); | |
var firstPart = f.substring(0, fidx).toLowerCase(); | |
f = f.substring(fidx + 1, f.length - 1); | |
var parts = f.split(","); | |
var x = value || 0; | |
var tmp; | |
for (var i = 0; i < parts.length; i++) | |
{ | |
if (parts[i].indexOf("x") === -1) continue; | |
parts[i] = parts[i].replace(/x/g, x.toString()); | |
eval("tmp = " + parts[i] + ";"); | |
if (tmp > 255) tmp = 255; | |
if (tmp < 0) tmp = 0; | |
parts[i] = Math.floor(tmp).toString(); | |
} | |
color = firstPart + "a(" + parts.join(",") + ", 1)"; | |
} | |
if (!fo) fo = this.fillOpacity; // default opacity | |
if (this.coordsJsFile) coords = this._polygonCoords[coords]; | |
if (!coords) continue; | |
var pathsSets = coords.split(";"); | |
for (var j = 0; j < pathsSets.length; j++) { | |
var paths = pathsSets[j].split(" "); | |
for (var i = 0; i < paths.length; i++) { | |
var p = paths[i].split(",") | |
paths[i] = new google.maps.LatLng(p[1], p[0], p[2]); | |
} | |
pathsSets[j] = paths; | |
} | |
var data = []; | |
if (this.polygonDataProperties != '') | |
{ | |
var props = this.polygonDataProperties.split(","); | |
for (var i = 0; i < props.length; i++) { | |
data[props[i]] = controller.getDataByName(props[i],n); | |
} | |
} | |
this._polygonData[this._polygonData.length] = { | |
title: sname, | |
coords: pathsSets, | |
color: (!color ? 'purple' : color), | |
fo: (!fo ? 0.1 : fo), | |
isClickable: (!isClickable ? 1 : isClickable), | |
data: data | |
}; | |
} | |
} | |
} | |
]]></Implementation> | |
</Method> | |
<Method name="syncMarkers"> | |
<Description> | |
Internal method: sync markers to data from controller.</Description> | |
<Internal>1</Internal> | |
<Language>javascript</Language> | |
<ClientMethod>1</ClientMethod> | |
<Implementation><![CDATA[ | |
try { | |
var controller = this.getController(); | |
if (null == controller) { | |
return; | |
} | |
this.clearMarkers(); | |
if (this._markerData) | |
{ | |
var map = this.getMapObject(); | |
// heatmap | |
if (this.markersAsHeatmap && map) | |
{ | |
if (isNaN(this._heatmap)) this._heatmap = new google.maps.visualization.HeatmapLayer(); | |
this._heatmap.setMap(null); | |
this._heatmap.setOptions({data: this._markerData}); | |
this._heatmap.setMap(map); | |
} | |
else | |
{ | |
for (var n = 0; n < this._markerData.length; n++) { | |
var md = this._markerData[n]; | |
if (md) { | |
var marker = this.addMarker(n,md.latitude,md.longitude,md.title,md.isClickable,md.icon,md.data); | |
if (marker) zenInvokeCallbackMethod(this.onaddmarker,this,'onaddmarker','marker',marker); | |
} | |
} | |
} | |
} | |
} | |
catch(ex) { | |
alert('Error in syncMarkers ' + ex.message); | |
} | |
]]></Implementation> | |
</Method> | |
<Method name="syncPolygons"> | |
<Description> | |
Internal method: sync polygons to data from controller.</Description> | |
<Internal>1</Internal> | |
<Language>javascript</Language> | |
<ClientMethod>1</ClientMethod> | |
<Implementation><![CDATA[ | |
function TooltipOverlay(map, title) | |
{ | |
this.map_ = map; | |
this.div_ = null; | |
this.title_ = title; | |
this.setMap(map); | |
}; | |
TooltipOverlay.prototype = new google.maps.OverlayView(); | |
TooltipOverlay.prototype.onAdd = function() | |
{ | |
var div = document.createElement('div'); | |
div.appendChild(document.createTextNode(this.title_)); | |
div.style.border = 'solid 1px #000000'; | |
div.style.color = '#000000'; | |
div.style.backgroundColor = '#ffffe1'; | |
div.style.whiteSpace = 'nowrap'; | |
div.style.font = 'icon'; | |
if (navigator.userAgent.indexOf("Safari")>=0 || navigator.userAgent.indexOf("Chrome")>=0) | |
{ | |
div.style.fontFamily = "Tahoma,sans-serif"; | |
div.style.fontSize = "13px"; | |
} | |
div.style.MozBoxShadow = '2px 2px 4px #7f7f7f'; | |
div.style.boxShadow = '2px 2px 4px #7f7f7f'; | |
div.style.padding = '2px 3px'; | |
div.style.position = 'absolute'; | |
div.style.visibility = "hidden"; | |
this.div_ = div; | |
var panes = this.getPanes(); | |
panes.floatShadow.appendChild(div); | |
} | |
TooltipOverlay.prototype.onRemove = function() | |
{ | |
if (this.div_) this.div_.parentNode.removeChild(this.div_); | |
this.div_ = null; | |
} | |
TooltipOverlay.prototype.draw = function() {} | |
TooltipOverlay.prototype.hide = function() | |
{ | |
if (this.div_) this.div_.style.visibility = "hidden"; | |
} | |
TooltipOverlay.prototype.show = function(latLng) | |
{ | |
if (this.div_) | |
{ | |
var point = this.getProjection().fromLatLngToDivPixel(latLng) | |
this.div_.style.left = point.x + 'px'; | |
this.div_.style.top = (point.y - parseInt(this.div_.offsetHeight)) + 'px'; | |
this.div_.style.visibility = "visible"; | |
} | |
} | |
var map = this.getMapObject(); | |
try { | |
var controller = this.getController(); | |
if (null == controller) { | |
return; | |
} | |
this.clearPolygons(); | |
if (this._polygonData) { | |
for (var n = 0; n < this._polygonData.length; n++) { | |
var md = this._polygonData[n]; | |
if (md) { | |
var poly = this.addPolygon(n, md.coords, md.color, md.fo, md.isClickable, md.title, md.data); | |
if (poly && map && md.title) poly.tooltip = new TooltipOverlay(map, md.title); | |
if (poly) zenInvokeCallbackMethod(this.onaddpolygon,this,'onaddpolygon','polygon',poly); | |
} | |
} | |
} | |
} | |
catch(ex) { | |
alert('Error in syncPolygons ' + ex.message); | |
} | |
]]></Implementation> | |
</Method> | |
<Method name="drillDown"> | |
<Description> | |
Perform a drilldown</Description> | |
<Internal>1</Internal> | |
<FormalSpec>title,latLng,zoom,data</FormalSpec> | |
<Language>javascript</Language> | |
<ClientMethod>1</ClientMethod> | |
<Implementation><![CDATA[ | |
var map = this.getMapObject(); | |
if (map) | |
{ | |
this._prevZoom.push(map.getZoom()); | |
this._prevCenter.push(map.getCenter()); | |
map.setZoom(parseInt(zoom)); | |
map.setCenter(latLng); | |
if (this._drillDownTitle.length > 0) this._drillDownTitle[this._drillDownTitle.length - 1].hide(); | |
this._drillDownTitle.push(this.newDrillDownTitleOverlay(map, 'zenPage.getComponent('+this.index+').drillUp();', title, this.drillUpButtonPosition)); | |
this._drillDownTitle[this._drillDownTitle.length - 1].show(); | |
zenInvokeCallbackMethod(this.ondrilldown,this,'ondrilldown','data',data); | |
} | |
]]></Implementation> | |
</Method> | |
<Method name="newDrillDownTitleOverlay"> | |
<Internal>1</Internal> | |
<FormalSpec>mapRef,clickHandler,text,drillUpButtonPosition</FormalSpec> | |
<Language>javascript</Language> | |
<ClientMethod>1</ClientMethod> | |
<Implementation><![CDATA[ | |
function DrillDownTitleOverlay(map, onclickHandler, titleText, drillUpButtonPosition) | |
{ | |
this.map_ = map; | |
this.div_ = null; | |
this.divTitle_ = null; | |
this.titleText_ = titleText; | |
this.onclickHandler_ = onclickHandler; | |
this.rect_ = null; | |
this.visible_ = false; | |
this.drillUpButtonPosition_ = drillUpButtonPosition; | |
this.setMap(map); | |
}; | |
DrillDownTitleOverlay.prototype = new google.maps.OverlayView(); | |
DrillDownTitleOverlay.prototype.onAdd = function() | |
{ | |
this.visible_ = true; | |
} | |
DrillDownTitleOverlay.prototype.onRemove = function() | |
{ | |
if (this.div_) this.div_.parentNode.removeChild(this.div_); | |
if (this.divTitle_) this.divTitle_.parentNode.removeChild(this.divTitle_); | |
if (this.rect_) this.rect_.setMap(null); | |
this.div_ = null; | |
this.divTitle_ = null; | |
this.rect_ = null; | |
} | |
DrillDownTitleOverlay.prototype.draw = function() | |
{ | |
var overlayProjection = this.getProjection(); | |
if (this.div_) this.div_.parentNode.removeChild(this.div_); | |
if (this.divTitle_) this.divTitle_.parentNode.removeChild(this.divTitle_); | |
if (this.rect_) this.rect_.setMap(null); | |
var div = document.createElement('div'); | |
div.appendChild(document.createTextNode('<< ' + $$$Text("Back", "Ensemble"))); | |
div.style.border = 'solid 1px #000000'; | |
div.style.color = '#ffffff'; | |
div.style.backgroundColor = '#356B8D'; | |
div.style.MozBoxShadow = '2px 2px 4px #7f7f7f'; | |
div.style.boxShadow = '2px 2px 4px #7f7f7f'; | |
div.style.whiteSpace = 'nowrap'; | |
div.style.font = 'icon'; | |
if (navigator.userAgent.indexOf("Safari")>=0 || navigator.userAgent.indexOf("Chrome")>=0) | |
{ | |
div.style.fontFamily = "Tahoma,sans-serif"; | |
div.style.fontSize = "13px"; | |
} | |
div.style.padding = '2px 8px'; | |
div.style.position = 'absolute'; | |
div.style.display = 'block'; | |
div.style.visibility = (this.visible_ ? "visible" : "hidden"); | |
this.div_ = div; | |
var div2 = document.createElement('div'); | |
div2.appendChild(document.createTextNode(this.titleText_)); | |
div2.style.border = 'solid 1px #000000'; | |
div2.style.color = '#000000'; | |
if (navigator.userAgent.indexOf("MSIE")>=0) | |
{ | |
div2.style.backgroundColor = 'white'; | |
} | |
else | |
{ | |
div2.style.backgroundColor = 'rgba(255, 255, 255, 0.8)'; | |
} | |
div2.style.MozBoxShadow = '2px 2px 4px #7f7f7f'; | |
div2.style.boxShadow = '2px 2px 4px #7f7f7f'; | |
div2.style.whiteSpace = 'nowrap'; | |
div2.style.font = 'icon'; | |
if (navigator.userAgent.indexOf("Safari")>=0 || navigator.userAgent.indexOf("Chrome")>=0) | |
{ | |
div2.style.fontFamily = "Tahoma,sans-serif"; | |
div2.style.fontSize = "13px"; | |
} | |
div2.style.fontWeight = 'bold'; | |
div2.style.padding = '2px 8px'; | |
div2.style.position = 'absolute'; | |
div2.style.display = 'block'; | |
div2.style.visibility = (this.visible_ ? "visible" : "hidden"); | |
this.divTitle_ = div2; | |
var panes = this.getPanes(); | |
panes.floatPane.appendChild(this.div_); | |
panes.floatPane.appendChild(this.divTitle_); | |
if (this.drillUpButtonPosition_ == 'bottom') | |
{ | |
var x = 12 | |
var y = parseInt(this.map_.getDiv().style.height) - 50 | |
} | |
else | |
{ | |
var x = 120 | |
var y = 14 | |
} | |
var point = overlayProjection.fromLatLngToDivPixel(overlayProjection.fromContainerPixelToLatLng(new google.maps.Point(x, y))); | |
this.div_.style.left = point.x + 'px'; | |
this.div_.style.top = point.y + 'px'; | |
var sw = overlayProjection.fromDivPixelToLatLng(new google.maps.Point(point.x, point.y + parseInt(this.div_.offsetHeight))); | |
var ne = overlayProjection.fromDivPixelToLatLng(new google.maps.Point(point.x + parseInt(this.div_.offsetWidth), point.y)); | |
var rectBounds = new google.maps.LatLngBounds(sw, ne); | |
this.rect_ = new google.maps.Rectangle({ | |
bounds: rectBounds, | |
clickable: true, | |
fillOpacity: 0, | |
strokeOpacity: 0, | |
map: (this.visible_ ? this.map_ : null), | |
zIndex: 1}); | |
google.maps.event.addListener(this.rect_, 'click', new Function(this.onclickHandler_)); | |
var point = new google.maps.Point(x + parseInt(this.div_.offsetWidth) - 1, 5); | |
point = overlayProjection.fromLatLngToDivPixel(overlayProjection.fromContainerPixelToLatLng(point)); | |
this.divTitle_.style.left = point.x + 'px'; | |
this.divTitle_.style.top = this.div_.style.top; | |
this.div_.style.height = (parseInt(this.divTitle_.offsetHeight) - 6) + 'px'; | |
this.divTitle_.style.height = (parseInt(this.divTitle_.offsetHeight) - 6) + 'px'; | |
} | |
DrillDownTitleOverlay.prototype.hide = function() | |
{ | |
if (this.div_) this.div_.style.visibility = "hidden"; | |
if (this.divTitle_) this.divTitle_.style.visibility = "hidden"; | |
if (this.rect_) this.rect_.setMap(null); | |
this.visible_ = false; | |
} | |
DrillDownTitleOverlay.prototype.show = function() | |
{ | |
if (this.div_) this.div_.style.visibility = "visible"; | |
if (this.divTitle_) this.divTitle_.style.visibility = "visible"; | |
if (this.rect_) this.rect_.setMap(this.map_); | |
this.visible_ = true; | |
} | |
return new DrillDownTitleOverlay(mapRef, clickHandler, text, drillUpButtonPosition); | |
]]></Implementation> | |
</Method> | |
<Method name="centerChangedHandler"> | |
<Internal>1</Internal> | |
<Language>javascript</Language> | |
<ClientMethod>1</ClientMethod> | |
<Implementation><![CDATA[ if (this._drillDownTitle.length > 0) this._drillDownTitle[this._drillDownTitle.length - 1].draw(); | |
]]></Implementation> | |
</Method> | |
<Method name="drillUp"> | |
<Description> | |
Restores map parameters (center, zoom and "drilldown title") to their state before drilldown was performed</Description> | |
<Internal>1</Internal> | |
<Language>javascript</Language> | |
<ClientMethod>1</ClientMethod> | |
<Implementation><![CDATA[ | |
var map = this.getMapObject(); | |
if (map) | |
{ | |
if (this._drillDownTitle.length > 0) | |
{ | |
this._drillDownTitle[this._drillDownTitle.length - 1].hide(); | |
this._drillDownTitle[this._drillDownTitle.length - 1].setMap(null); | |
this._drillDownTitle.pop(); | |
if (this._drillDownTitle.length > 0) this._drillDownTitle[this._drillDownTitle.length - 1].show(); | |
} | |
if (this._prevZoom.length > 0) | |
{ | |
map.setZoom(this._prevZoom[this._prevZoom.length - 1]); | |
this._prevZoom.pop(); | |
} | |
if (this._prevCenter.length > 0) | |
{ | |
map.setCenter(this._prevCenter[this._prevCenter.length - 1]); | |
this._prevCenter.pop(); | |
} | |
zenInvokeCallbackMethod(this.ondrillup,this,'ondrillup'); | |
} | |
]]></Implementation> | |
</Method> | |
<Method name="getControl"> | |
<Description> | |
Obtain a reference to a filter (or any other widget control).</Description> | |
<FormalSpec>ind</FormalSpec> | |
<Language>javascript</Language> | |
<ClientMethod>1</ClientMethod> | |
<Implementation><![CDATA[ return zenPage.getComponent(this.parent.parent.controlIndices[ind]); | |
]]></Implementation> | |
</Method> | |
<Method name="getFilterStateArray"> | |
<Description> | |
Get the array of filter state information for the widget.</Description> | |
<Language>javascript</Language> | |
<ClientMethod>1</ClientMethod> | |
<Implementation><![CDATA[ return this.parent.parent.getFilterStateArray(); | |
]]></Implementation> | |
</Method> | |
<Method name="findWidgetByName"> | |
<Description> | |
Find widget by name (NB widget names don't have to be unique)</Description> | |
<FormalSpec>wname</FormalSpec> | |
<Language>javascript</Language> | |
<ClientMethod>1</ClientMethod> | |
<Implementation><![CDATA[ | |
var desktop = zen('desktop'); | |
var w = null; | |
if (desktop) | |
{ | |
for (var n = 0; n < desktop.children.length; n++) | |
{ | |
var widget = desktop.children[n]; | |
if (widget && widget.getEnclosingDiv() && (widget.name==wname) && widget.controlEventHandler) | |
{ | |
w = widget; | |
break; | |
} | |
} | |
} | |
return w; | |
]]></Implementation> | |
</Method> | |
<Method name="clearMarkers"> | |
<Description> | |
Internal method: clear markers from map.</Description> | |
<Internal>1</Internal> | |
<Language>javascript</Language> | |
<ClientMethod>1</ClientMethod> | |
<Implementation><![CDATA[ | |
try { | |
// kill old markers | |
if (this._markers) { | |
for (var n = 0; n < this._markers.length; n++) { | |
this.removeMarker(this._markers[n]); | |
} | |
} | |
this._markers = []; | |
if (!isNaN(this._heatmap)) this._heatmap.setMap(null); | |
} | |
catch(ex) { | |
alert('Error in clearMarkers ' + ex.message); | |
} | |
]]></Implementation> | |
</Method> | |
<Method name="clearPolygons"> | |
<Description> | |
Internal method: clear polygons from map.</Description> | |
<Internal>1</Internal> | |
<Language>javascript</Language> | |
<ClientMethod>1</ClientMethod> | |
<Implementation><![CDATA[ | |
try { | |
// kill old polygons | |
if (this._polygons) { | |
for (var n = 0; n < this._polygons.length; n++) { | |
this.removePolygon(this._polygons[n]); | |
} | |
} | |
this._polygons = []; | |
} | |
catch(ex) { | |
alert('Error in clearPolygons ' + ex.message); | |
} | |
]]></Implementation> | |
</Method> | |
<Method name="panToAddress"> | |
<Description> | |
Invoke the google geocoder api to lookup an address string and move the map to view it. | |
Applications that call this are responsible for adhering to the google geocoder api terms of use.</Description> | |
<FormalSpec>address</FormalSpec> | |
<Language>javascript</Language> | |
<ClientMethod>1</ClientMethod> | |
<Implementation><![CDATA[ | |
if (('undefined' == typeof google)||('undefined' == typeof google.maps)) { | |
return ''; | |
} | |
var callback = new Function('results','status','zenPage.getComponent('+this.index+').geocodeAddressHandler(results,status)'); | |
var geocoder = new google.maps.Geocoder(); | |
geocoder.geocode({ 'address': address}, callback); | |
]]></Implementation> | |
</Method> | |
<Method name="geocodeAddressHandler"> | |
<Description> | |
Callback for geocoder API.</Description> | |
<Internal>1</Internal> | |
<FormalSpec>results,status</FormalSpec> | |
<Language>javascript</Language> | |
<ClientMethod>1</ClientMethod> | |
<Implementation><![CDATA[ | |
if (status == google.maps.GeocoderStatus.OK) { | |
var map = this.getMapObject(); | |
if (map) { | |
map.setCenter(results[0].geometry.location); | |
} | |
} | |
else { | |
alert("Address not found: " + status); | |
} | |
]]></Implementation> | |
</Method> | |
<Method name="%DrawHTML"> | |
<Implementation><![CDATA[ | |
// This causes ZEN to render this component on the client. | |
set ..renderFlag = ..renderFlag + 1 | |
// copy ..settings into properties | |
#dim propName As %String = $order(..settings("")) | |
while (propName '= "") | |
{ | |
if ("" '= $get(..settings(propName))) | |
try | |
{ | |
set $property($this, propName) = ..settings(propName) | |
} | |
catch {} | |
set propName = $order(..settings(propName)) | |
} | |
&html<<script type="text/javascript"> | |
function hsv2rgb(h,s,v) | |
{ | |
// Adapted from http://www.easyrgb.com/math.html | |
// hsv values = 0 - 1, rgb values = 0 - 255 | |
var r, g, b; | |
var RGB = new Array(); | |
if(s == 0) | |
{ | |
RGB['red']=RGB['green']=RGB['blue']=Math.round(v*255); | |
} | |
else | |
{ | |
var var_h = h * 6; // h must be < 1 | |
if (var_h == 6) var_h = 0; | |
var var_i = Math.floor( var_h ); | |
var var_1 = v*(1-s); | |
var var_2 = v*(1-s*(var_h-var_i)); | |
var var_3 = v*(1-s*(1-(var_h-var_i))); | |
if (var_i == 0) | |
{ | |
var_r = v; | |
var_g = var_3; | |
var_b = var_1; | |
} | |
else if (var_i == 1) | |
{ | |
var_r = var_2; | |
var_g = v; | |
var_b = var_1; | |
} | |
else if (var_i == 2) | |
{ | |
var_r = var_1; | |
var_g = v; | |
var_b = var_3 | |
} | |
else if (var_i == 3) | |
{ | |
var_r = var_1; | |
var_g = var_2; | |
var_b = v; | |
} | |
else if (var_i == 4) | |
{ | |
var_r = var_3; | |
var_g = var_1; | |
var_b = v; | |
} | |
else | |
{ | |
var_r = v; | |
var_g = var_1; | |
var_b = var_2 | |
} | |
RGB['red'] = Math.round(var_r * 255); | |
RGB['green'] = Math.round(var_g * 255); | |
RGB['blue'] = Math.round(var_b * 255); | |
} | |
return '#' + RGB['red'].toString(16) + RGB['green'].toString(16) + RGB['blue'].toString(16); | |
}; | |
</script>> | |
if (..coordsJsFile '= "") | |
{ | |
&html<<script type='text/javascript' src='#(..coordsJsFile)#'></script>> | |
} | |
]]></Implementation> | |
</Method> | |
<Method name="onApplyFilters"> | |
<Internal>1</Internal> | |
<FormalSpec>refresh</FormalSpec> | |
<Language>javascript</Language> | |
<ClientMethod>1</ClientMethod> | |
<Implementation><![CDATA[ zenInvokeCallbackMethod(this.onapplyfilters,this,'onapplyfilters','refresh',refresh); | |
]]></Implementation> | |
</Method> | |
</Class> | |
<Class name="demo.HeatmapDemoKPI"> | |
<Super>%DeepSee.KPI</Super> | |
<TimeChanged>63061,46106.505484</TimeChanged> | |
<TimeCreated>63061,44459.477833</TimeCreated> | |
<XData name="KPI"> | |
<XMLNamespace>http://www.intersystems.com/deepsee/kpi</XMLNamespace> | |
<Data><![CDATA[ | |
<kpi xmlns="http://www.intersystems.com/deepsee/kpi" | |
name="demo/HeatmapDemoKPI" sourceType="manual" caption=""> | |
<property name="latitude"/> | |
<property name="longitude"/> | |
</kpi> | |
]]></Data> | |
</XData> | |
<Method name="%OnLoadKPI"> | |
<ReturnType>%Status</ReturnType> | |
<Implementation><![CDATA[ | |
set ..%seriesCount = 500 | |
//for i=1:1:..%seriesCount set ..%seriesNames(i) = i | |
set ..%data(1, "latitude") = 37.782551 set ..%data(1, "longitude") = -122.445368 | |
set ..%data(2, "latitude") = 37.782745 set ..%data(2, "longitude") = -122.444586 | |
set ..%data(3, "latitude") = 37.782842 set ..%data(3, "longitude") = -122.443688 | |
set ..%data(4, "latitude") = 37.782919 set ..%data(4, "longitude") = -122.442815 | |
set ..%data(5, "latitude") = 37.782992 set ..%data(5, "longitude") = -122.442112 | |
set ..%data(6, "latitude") = 37.783100 set ..%data(6, "longitude") = -122.441461 | |
set ..%data(7, "latitude") = 37.783206 set ..%data(7, "longitude") = -122.440829 | |
set ..%data(8, "latitude") = 37.783273 set ..%data(8, "longitude") = -122.440324 | |
set ..%data(9, "latitude") = 37.783316 set ..%data(9, "longitude") = -122.440023 | |
set ..%data(10, "latitude") = 37.783357 set ..%data(10, "longitude") = -122.439794 | |
set ..%data(11, "latitude") = 37.783371 set ..%data(11, "longitude") = -122.439687 | |
set ..%data(12, "latitude") = 37.783368 set ..%data(12, "longitude") = -122.439666 | |
set ..%data(13, "latitude") = 37.783383 set ..%data(13, "longitude") = -122.439594 | |
set ..%data(14, "latitude") = 37.783508 set ..%data(14, "longitude") = -122.439525 | |
set ..%data(15, "latitude") = 37.783842 set ..%data(15, "longitude") = -122.439591 | |
set ..%data(16, "latitude") = 37.784147 set ..%data(16, "longitude") = -122.439668 | |
set ..%data(17, "latitude") = 37.784206 set ..%data(17, "longitude") = -122.439686 | |
set ..%data(18, "latitude") = 37.784386 set ..%data(18, "longitude") = -122.439790 | |
set ..%data(19, "latitude") = 37.784701 set ..%data(19, "longitude") = -122.439902 | |
set ..%data(20, "latitude") = 37.784965 set ..%data(20, "longitude") = -122.439938 | |
set ..%data(21, "latitude") = 37.785010 set ..%data(21, "longitude") = -122.439947 | |
set ..%data(22, "latitude") = 37.785360 set ..%data(22, "longitude") = -122.439952 | |
set ..%data(23, "latitude") = 37.785715 set ..%data(23, "longitude") = -122.440030 | |
set ..%data(24, "latitude") = 37.786117 set ..%data(24, "longitude") = -122.440119 | |
set ..%data(25, "latitude") = 37.786564 set ..%data(25, "longitude") = -122.440209 | |
set ..%data(26, "latitude") = 37.786905 set ..%data(26, "longitude") = -122.440270 | |
set ..%data(27, "latitude") = 37.786956 set ..%data(27, "longitude") = -122.440279 | |
set ..%data(28, "latitude") = 37.800224 set ..%data(28, "longitude") = -122.433520 | |
set ..%data(29, "latitude") = 37.800155 set ..%data(29, "longitude") = -122.434101 | |
set ..%data(30, "latitude") = 37.800160 set ..%data(30, "longitude") = -122.434430 | |
set ..%data(31, "latitude") = 37.800378 set ..%data(31, "longitude") = -122.434527 | |
set ..%data(32, "latitude") = 37.800738 set ..%data(32, "longitude") = -122.434598 | |
set ..%data(33, "latitude") = 37.800938 set ..%data(33, "longitude") = -122.434650 | |
set ..%data(34, "latitude") = 37.801024 set ..%data(34, "longitude") = -122.434889 | |
set ..%data(35, "latitude") = 37.800955 set ..%data(35, "longitude") = -122.435392 | |
set ..%data(36, "latitude") = 37.800886 set ..%data(36, "longitude") = -122.435959 | |
set ..%data(37, "latitude") = 37.800811 set ..%data(37, "longitude") = -122.436275 | |
set ..%data(38, "latitude") = 37.800788 set ..%data(38, "longitude") = -122.436299 | |
set ..%data(39, "latitude") = 37.800719 set ..%data(39, "longitude") = -122.436302 | |
set ..%data(40, "latitude") = 37.800702 set ..%data(40, "longitude") = -122.436298 | |
set ..%data(41, "latitude") = 37.800661 set ..%data(41, "longitude") = -122.436273 | |
set ..%data(42, "latitude") = 37.800395 set ..%data(42, "longitude") = -122.436172 | |
set ..%data(43, "latitude") = 37.800228 set ..%data(43, "longitude") = -122.436116 | |
set ..%data(44, "latitude") = 37.800169 set ..%data(44, "longitude") = -122.436130 | |
set ..%data(45, "latitude") = 37.800066 set ..%data(45, "longitude") = -122.436167 | |
set ..%data(46, "latitude") = 37.784345 set ..%data(46, "longitude") = -122.422922 | |
set ..%data(47, "latitude") = 37.784389 set ..%data(47, "longitude") = -122.422926 | |
set ..%data(48, "latitude") = 37.784437 set ..%data(48, "longitude") = -122.422924 | |
set ..%data(49, "latitude") = 37.784746 set ..%data(49, "longitude") = -122.422818 | |
set ..%data(50, "latitude") = 37.785436 set ..%data(50, "longitude") = -122.422959 | |
set ..%data(51, "latitude") = 37.786120 set ..%data(51, "longitude") = -122.423112 | |
set ..%data(52, "latitude") = 37.786433 set ..%data(52, "longitude") = -122.423029 | |
set ..%data(53, "latitude") = 37.786631 set ..%data(53, "longitude") = -122.421213 | |
set ..%data(54, "latitude") = 37.786660 set ..%data(54, "longitude") = -122.421033 | |
set ..%data(55, "latitude") = 37.786801 set ..%data(55, "longitude") = -122.420141 | |
set ..%data(56, "latitude") = 37.786823 set ..%data(56, "longitude") = -122.420034 | |
set ..%data(57, "latitude") = 37.786831 set ..%data(57, "longitude") = -122.419916 | |
set ..%data(58, "latitude") = 37.787034 set ..%data(58, "longitude") = -122.418208 | |
set ..%data(59, "latitude") = 37.787056 set ..%data(59, "longitude") = -122.418034 | |
set ..%data(60, "latitude") = 37.787169 set ..%data(60, "longitude") = -122.417145 | |
set ..%data(61, "latitude") = 37.787217 set ..%data(61, "longitude") = -122.416715 | |
set ..%data(62, "latitude") = 37.786144 set ..%data(62, "longitude") = -122.416403 | |
set ..%data(63, "latitude") = 37.785292 set ..%data(63, "longitude") = -122.416257 | |
set ..%data(64, "latitude") = 37.780666 set ..%data(64, "longitude") = -122.390374 | |
set ..%data(65, "latitude") = 37.780501 set ..%data(65, "longitude") = -122.391281 | |
set ..%data(66, "latitude") = 37.780148 set ..%data(66, "longitude") = -122.392052 | |
set ..%data(67, "latitude") = 37.780173 set ..%data(67, "longitude") = -122.391148 | |
set ..%data(68, "latitude") = 37.780693 set ..%data(68, "longitude") = -122.390592 | |
set ..%data(69, "latitude") = 37.781261 set ..%data(69, "longitude") = -122.391142 | |
set ..%data(70, "latitude") = 37.781808 set ..%data(70, "longitude") = -122.391730 | |
set ..%data(71, "latitude") = 37.782340 set ..%data(71, "longitude") = -122.392341 | |
set ..%data(72, "latitude") = 37.782812 set ..%data(72, "longitude") = -122.393022 | |
set ..%data(73, "latitude") = 37.783300 set ..%data(73, "longitude") = -122.393672 | |
set ..%data(74, "latitude") = 37.783809 set ..%data(74, "longitude") = -122.394275 | |
set ..%data(75, "latitude") = 37.784246 set ..%data(75, "longitude") = -122.394979 | |
set ..%data(76, "latitude") = 37.784791 set ..%data(76, "longitude") = -122.395958 | |
set ..%data(77, "latitude") = 37.785675 set ..%data(77, "longitude") = -122.396746 | |
set ..%data(78, "latitude") = 37.786262 set ..%data(78, "longitude") = -122.395780 | |
set ..%data(79, "latitude") = 37.786776 set ..%data(79, "longitude") = -122.395093 | |
set ..%data(80, "latitude") = 37.787282 set ..%data(80, "longitude") = -122.394426 | |
set ..%data(81, "latitude") = 37.787783 set ..%data(81, "longitude") = -122.393767 | |
set ..%data(82, "latitude") = 37.788343 set ..%data(82, "longitude") = -122.393184 | |
set ..%data(83, "latitude") = 37.788895 set ..%data(83, "longitude") = -122.392506 | |
set ..%data(84, "latitude") = 37.789371 set ..%data(84, "longitude") = -122.391701 | |
set ..%data(85, "latitude") = 37.789722 set ..%data(85, "longitude") = -122.390952 | |
set ..%data(86, "latitude") = 37.790315 set ..%data(86, "longitude") = -122.390305 | |
set ..%data(87, "latitude") = 37.790738 set ..%data(87, "longitude") = -122.389616 | |
set ..%data(88, "latitude") = 37.779448 set ..%data(88, "longitude") = -122.438702 | |
set ..%data(89, "latitude") = 37.779023 set ..%data(89, "longitude") = -122.438585 | |
set ..%data(90, "latitude") = 37.778542 set ..%data(90, "longitude") = -122.438492 | |
set ..%data(91, "latitude") = 37.778100 set ..%data(91, "longitude") = -122.438411 | |
set ..%data(92, "latitude") = 37.777986 set ..%data(92, "longitude") = -122.438376 | |
set ..%data(93, "latitude") = 37.777680 set ..%data(93, "longitude") = -122.438313 | |
set ..%data(94, "latitude") = 37.777316 set ..%data(94, "longitude") = -122.438273 | |
set ..%data(95, "latitude") = 37.777135 set ..%data(95, "longitude") = -122.438254 | |
set ..%data(96, "latitude") = 37.776987 set ..%data(96, "longitude") = -122.438303 | |
set ..%data(97, "latitude") = 37.776946 set ..%data(97, "longitude") = -122.438404 | |
set ..%data(98, "latitude") = 37.776944 set ..%data(98, "longitude") = -122.438467 | |
set ..%data(99, "latitude") = 37.776892 set ..%data(99, "longitude") = -122.438459 | |
set ..%data(100, "latitude") = 37.776842 set ..%data(100, "longitude") = -122.438442 | |
set ..%data(101, "latitude") = 37.776822 set ..%data(101, "longitude") = -122.438391 | |
set ..%data(102, "latitude") = 37.776814 set ..%data(102, "longitude") = -122.438412 | |
set ..%data(103, "latitude") = 37.776787 set ..%data(103, "longitude") = -122.438628 | |
set ..%data(104, "latitude") = 37.776729 set ..%data(104, "longitude") = -122.438650 | |
set ..%data(105, "latitude") = 37.776759 set ..%data(105, "longitude") = -122.438677 | |
set ..%data(106, "latitude") = 37.776772 set ..%data(106, "longitude") = -122.438498 | |
set ..%data(107, "latitude") = 37.776787 set ..%data(107, "longitude") = -122.438389 | |
set ..%data(108, "latitude") = 37.776848 set ..%data(108, "longitude") = -122.438283 | |
set ..%data(109, "latitude") = 37.776870 set ..%data(109, "longitude") = -122.438239 | |
set ..%data(110, "latitude") = 37.777015 set ..%data(110, "longitude") = -122.438198 | |
set ..%data(111, "latitude") = 37.777333 set ..%data(111, "longitude") = -122.438256 | |
set ..%data(112, "latitude") = 37.777595 set ..%data(112, "longitude") = -122.438308 | |
set ..%data(113, "latitude") = 37.777797 set ..%data(113, "longitude") = -122.438344 | |
set ..%data(114, "latitude") = 37.778160 set ..%data(114, "longitude") = -122.438442 | |
set ..%data(115, "latitude") = 37.778414 set ..%data(115, "longitude") = -122.438508 | |
set ..%data(116, "latitude") = 37.778445 set ..%data(116, "longitude") = -122.438516 | |
set ..%data(117, "latitude") = 37.778503 set ..%data(117, "longitude") = -122.438529 | |
set ..%data(118, "latitude") = 37.778607 set ..%data(118, "longitude") = -122.438549 | |
set ..%data(119, "latitude") = 37.778670 set ..%data(119, "longitude") = -122.438644 | |
set ..%data(120, "latitude") = 37.778847 set ..%data(120, "longitude") = -122.438706 | |
set ..%data(121, "latitude") = 37.779240 set ..%data(121, "longitude") = -122.438744 | |
set ..%data(122, "latitude") = 37.779738 set ..%data(122, "longitude") = -122.438822 | |
set ..%data(123, "latitude") = 37.780201 set ..%data(123, "longitude") = -122.438882 | |
set ..%data(124, "latitude") = 37.780400 set ..%data(124, "longitude") = -122.438905 | |
set ..%data(125, "latitude") = 37.780501 set ..%data(125, "longitude") = -122.438921 | |
set ..%data(126, "latitude") = 37.780892 set ..%data(126, "longitude") = -122.438986 | |
set ..%data(127, "latitude") = 37.781446 set ..%data(127, "longitude") = -122.439087 | |
set ..%data(128, "latitude") = 37.781985 set ..%data(128, "longitude") = -122.439199 | |
set ..%data(129, "latitude") = 37.782239 set ..%data(129, "longitude") = -122.439249 | |
set ..%data(130, "latitude") = 37.782286 set ..%data(130, "longitude") = -122.439266 | |
set ..%data(131, "latitude") = 37.797847 set ..%data(131, "longitude") = -122.429388 | |
set ..%data(132, "latitude") = 37.797874 set ..%data(132, "longitude") = -122.429180 | |
set ..%data(133, "latitude") = 37.797885 set ..%data(133, "longitude") = -122.429069 | |
set ..%data(134, "latitude") = 37.797887 set ..%data(134, "longitude") = -122.429050 | |
set ..%data(135, "latitude") = 37.797933 set ..%data(135, "longitude") = -122.428954 | |
set ..%data(136, "latitude") = 37.798242 set ..%data(136, "longitude") = -122.428990 | |
set ..%data(137, "latitude") = 37.798617 set ..%data(137, "longitude") = -122.429075 | |
set ..%data(138, "latitude") = 37.798719 set ..%data(138, "longitude") = -122.429092 | |
set ..%data(139, "latitude") = 37.798944 set ..%data(139, "longitude") = -122.429145 | |
set ..%data(140, "latitude") = 37.799320 set ..%data(140, "longitude") = -122.429251 | |
set ..%data(141, "latitude") = 37.799590 set ..%data(141, "longitude") = -122.429309 | |
set ..%data(142, "latitude") = 37.799677 set ..%data(142, "longitude") = -122.429324 | |
set ..%data(143, "latitude") = 37.799966 set ..%data(143, "longitude") = -122.429360 | |
set ..%data(144, "latitude") = 37.800288 set ..%data(144, "longitude") = -122.429430 | |
set ..%data(145, "latitude") = 37.800443 set ..%data(145, "longitude") = -122.429461 | |
set ..%data(146, "latitude") = 37.800465 set ..%data(146, "longitude") = -122.429474 | |
set ..%data(147, "latitude") = 37.800644 set ..%data(147, "longitude") = -122.429540 | |
set ..%data(148, "latitude") = 37.800948 set ..%data(148, "longitude") = -122.429620 | |
set ..%data(149, "latitude") = 37.801242 set ..%data(149, "longitude") = -122.429685 | |
set ..%data(150, "latitude") = 37.801375 set ..%data(150, "longitude") = -122.429702 | |
set ..%data(151, "latitude") = 37.801400 set ..%data(151, "longitude") = -122.429703 | |
set ..%data(152, "latitude") = 37.801453 set ..%data(152, "longitude") = -122.429707 | |
set ..%data(153, "latitude") = 37.801473 set ..%data(153, "longitude") = -122.429709 | |
set ..%data(154, "latitude") = 37.801532 set ..%data(154, "longitude") = -122.429707 | |
set ..%data(155, "latitude") = 37.801852 set ..%data(155, "longitude") = -122.429729 | |
set ..%data(156, "latitude") = 37.802173 set ..%data(156, "longitude") = -122.429789 | |
set ..%data(157, "latitude") = 37.802459 set ..%data(157, "longitude") = -122.429847 | |
set ..%data(158, "latitude") = 37.802554 set ..%data(158, "longitude") = -122.429825 | |
set ..%data(159, "latitude") = 37.802647 set ..%data(159, "longitude") = -122.429549 | |
set ..%data(160, "latitude") = 37.802693 set ..%data(160, "longitude") = -122.429179 | |
set ..%data(161, "latitude") = 37.802729 set ..%data(161, "longitude") = -122.428751 | |
set ..%data(162, "latitude") = 37.766104 set ..%data(162, "longitude") = -122.409291 | |
set ..%data(163, "latitude") = 37.766103 set ..%data(163, "longitude") = -122.409268 | |
set ..%data(164, "latitude") = 37.766138 set ..%data(164, "longitude") = -122.409229 | |
set ..%data(165, "latitude") = 37.766183 set ..%data(165, "longitude") = -122.409231 | |
set ..%data(166, "latitude") = 37.766153 set ..%data(166, "longitude") = -122.409276 | |
set ..%data(167, "latitude") = 37.766005 set ..%data(167, "longitude") = -122.409365 | |
set ..%data(168, "latitude") = 37.765897 set ..%data(168, "longitude") = -122.409570 | |
set ..%data(169, "latitude") = 37.765767 set ..%data(169, "longitude") = -122.409739 | |
set ..%data(170, "latitude") = 37.765693 set ..%data(170, "longitude") = -122.410389 | |
set ..%data(171, "latitude") = 37.765615 set ..%data(171, "longitude") = -122.411201 | |
set ..%data(172, "latitude") = 37.765533 set ..%data(172, "longitude") = -122.412121 | |
set ..%data(173, "latitude") = 37.765467 set ..%data(173, "longitude") = -122.412939 | |
set ..%data(174, "latitude") = 37.765444 set ..%data(174, "longitude") = -122.414821 | |
set ..%data(175, "latitude") = 37.765444 set ..%data(175, "longitude") = -122.414964 | |
set ..%data(176, "latitude") = 37.765318 set ..%data(176, "longitude") = -122.415424 | |
set ..%data(177, "latitude") = 37.763961 set ..%data(177, "longitude") = -122.415296 | |
set ..%data(178, "latitude") = 37.763115 set ..%data(178, "longitude") = -122.415196 | |
set ..%data(179, "latitude") = 37.762967 set ..%data(179, "longitude") = -122.415183 | |
set ..%data(180, "latitude") = 37.762278 set ..%data(180, "longitude") = -122.415127 | |
set ..%data(181, "latitude") = 37.761675 set ..%data(181, "longitude") = -122.415055 | |
set ..%data(182, "latitude") = 37.760932 set ..%data(182, "longitude") = -122.414988 | |
set ..%data(183, "latitude") = 37.759337 set ..%data(183, "longitude") = -122.414862 | |
set ..%data(184, "latitude") = 37.773187 set ..%data(184, "longitude") = -122.421922 | |
set ..%data(185, "latitude") = 37.773043 set ..%data(185, "longitude") = -122.422118 | |
set ..%data(186, "latitude") = 37.773007 set ..%data(186, "longitude") = -122.422165 | |
set ..%data(187, "latitude") = 37.772979 set ..%data(187, "longitude") = -122.422219 | |
set ..%data(188, "latitude") = 37.772865 set ..%data(188, "longitude") = -122.422394 | |
set ..%data(189, "latitude") = 37.772779 set ..%data(189, "longitude") = -122.422503 | |
set ..%data(190, "latitude") = 37.772676 set ..%data(190, "longitude") = -122.422701 | |
set ..%data(191, "latitude") = 37.772606 set ..%data(191, "longitude") = -122.422806 | |
set ..%data(192, "latitude") = 37.772566 set ..%data(192, "longitude") = -122.422840 | |
set ..%data(193, "latitude") = 37.772508 set ..%data(193, "longitude") = -122.422852 | |
set ..%data(194, "latitude") = 37.772387 set ..%data(194, "longitude") = -122.423011 | |
set ..%data(195, "latitude") = 37.772099 set ..%data(195, "longitude") = -122.423328 | |
set ..%data(196, "latitude") = 37.771704 set ..%data(196, "longitude") = -122.423783 | |
set ..%data(197, "latitude") = 37.771481 set ..%data(197, "longitude") = -122.424081 | |
set ..%data(198, "latitude") = 37.771400 set ..%data(198, "longitude") = -122.424179 | |
set ..%data(199, "latitude") = 37.771352 set ..%data(199, "longitude") = -122.424220 | |
set ..%data(200, "latitude") = 37.771248 set ..%data(200, "longitude") = -122.424327 | |
set ..%data(201, "latitude") = 37.770904 set ..%data(201, "longitude") = -122.424781 | |
set ..%data(202, "latitude") = 37.770520 set ..%data(202, "longitude") = -122.425283 | |
set ..%data(203, "latitude") = 37.770337 set ..%data(203, "longitude") = -122.425553 | |
set ..%data(204, "latitude") = 37.770128 set ..%data(204, "longitude") = -122.425832 | |
set ..%data(205, "latitude") = 37.769756 set ..%data(205, "longitude") = -122.426331 | |
set ..%data(206, "latitude") = 37.769300 set ..%data(206, "longitude") = -122.426902 | |
set ..%data(207, "latitude") = 37.769132 set ..%data(207, "longitude") = -122.427065 | |
set ..%data(208, "latitude") = 37.769092 set ..%data(208, "longitude") = -122.427103 | |
set ..%data(209, "latitude") = 37.768979 set ..%data(209, "longitude") = -122.427172 | |
set ..%data(210, "latitude") = 37.768595 set ..%data(210, "longitude") = -122.427634 | |
set ..%data(211, "latitude") = 37.768372 set ..%data(211, "longitude") = -122.427913 | |
set ..%data(212, "latitude") = 37.768337 set ..%data(212, "longitude") = -122.427961 | |
set ..%data(213, "latitude") = 37.768244 set ..%data(213, "longitude") = -122.428138 | |
set ..%data(214, "latitude") = 37.767942 set ..%data(214, "longitude") = -122.428581 | |
set ..%data(215, "latitude") = 37.767482 set ..%data(215, "longitude") = -122.429094 | |
set ..%data(216, "latitude") = 37.767031 set ..%data(216, "longitude") = -122.429606 | |
set ..%data(217, "latitude") = 37.766732 set ..%data(217, "longitude") = -122.429986 | |
set ..%data(218, "latitude") = 37.766680 set ..%data(218, "longitude") = -122.430058 | |
set ..%data(219, "latitude") = 37.766633 set ..%data(219, "longitude") = -122.430109 | |
set ..%data(220, "latitude") = 37.766580 set ..%data(220, "longitude") = -122.430211 | |
set ..%data(221, "latitude") = 37.766367 set ..%data(221, "longitude") = -122.430594 | |
set ..%data(222, "latitude") = 37.765910 set ..%data(222, "longitude") = -122.431137 | |
set ..%data(223, "latitude") = 37.765353 set ..%data(223, "longitude") = -122.431806 | |
set ..%data(224, "latitude") = 37.764962 set ..%data(224, "longitude") = -122.432298 | |
set ..%data(225, "latitude") = 37.764868 set ..%data(225, "longitude") = -122.432486 | |
set ..%data(226, "latitude") = 37.764518 set ..%data(226, "longitude") = -122.432913 | |
set ..%data(227, "latitude") = 37.763435 set ..%data(227, "longitude") = -122.434173 | |
set ..%data(228, "latitude") = 37.762847 set ..%data(228, "longitude") = -122.434953 | |
set ..%data(229, "latitude") = 37.762291 set ..%data(229, "longitude") = -122.435935 | |
set ..%data(230, "latitude") = 37.762224 set ..%data(230, "longitude") = -122.436074 | |
set ..%data(231, "latitude") = 37.761957 set ..%data(231, "longitude") = -122.436892 | |
set ..%data(232, "latitude") = 37.761652 set ..%data(232, "longitude") = -122.438886 | |
set ..%data(233, "latitude") = 37.761284 set ..%data(233, "longitude") = -122.439955 | |
set ..%data(234, "latitude") = 37.761210 set ..%data(234, "longitude") = -122.440068 | |
set ..%data(235, "latitude") = 37.761064 set ..%data(235, "longitude") = -122.440720 | |
set ..%data(236, "latitude") = 37.761040 set ..%data(236, "longitude") = -122.441411 | |
set ..%data(237, "latitude") = 37.761048 set ..%data(237, "longitude") = -122.442324 | |
set ..%data(238, "latitude") = 37.760851 set ..%data(238, "longitude") = -122.443118 | |
set ..%data(239, "latitude") = 37.759977 set ..%data(239, "longitude") = -122.444591 | |
set ..%data(240, "latitude") = 37.759913 set ..%data(240, "longitude") = -122.444698 | |
set ..%data(241, "latitude") = 37.759623 set ..%data(241, "longitude") = -122.445065 | |
set ..%data(242, "latitude") = 37.758902 set ..%data(242, "longitude") = -122.445158 | |
set ..%data(243, "latitude") = 37.758428 set ..%data(243, "longitude") = -122.444570 | |
set ..%data(244, "latitude") = 37.757687 set ..%data(244, "longitude") = -122.443340 | |
set ..%data(245, "latitude") = 37.757583 set ..%data(245, "longitude") = -122.443240 | |
set ..%data(246, "latitude") = 37.757019 set ..%data(246, "longitude") = -122.442787 | |
set ..%data(247, "latitude") = 37.756603 set ..%data(247, "longitude") = -122.442322 | |
set ..%data(248, "latitude") = 37.756380 set ..%data(248, "longitude") = -122.441602 | |
set ..%data(249, "latitude") = 37.755790 set ..%data(249, "longitude") = -122.441382 | |
set ..%data(250, "latitude") = 37.754493 set ..%data(250, "longitude") = -122.442133 | |
set ..%data(251, "latitude") = 37.754361 set ..%data(251, "longitude") = -122.442206 | |
set ..%data(252, "latitude") = 37.753719 set ..%data(252, "longitude") = -122.442650 | |
set ..%data(253, "latitude") = 37.753096 set ..%data(253, "longitude") = -122.442915 | |
set ..%data(254, "latitude") = 37.751617 set ..%data(254, "longitude") = -122.443211 | |
set ..%data(255, "latitude") = 37.751496 set ..%data(255, "longitude") = -122.443246 | |
set ..%data(256, "latitude") = 37.750733 set ..%data(256, "longitude") = -122.443428 | |
set ..%data(257, "latitude") = 37.750126 set ..%data(257, "longitude") = -122.443536 | |
set ..%data(258, "latitude") = 37.750103 set ..%data(258, "longitude") = -122.443784 | |
set ..%data(259, "latitude") = 37.750390 set ..%data(259, "longitude") = -122.444010 | |
set ..%data(260, "latitude") = 37.750448 set ..%data(260, "longitude") = -122.444013 | |
set ..%data(261, "latitude") = 37.750536 set ..%data(261, "longitude") = -122.444040 | |
set ..%data(262, "latitude") = 37.750493 set ..%data(262, "longitude") = -122.444141 | |
set ..%data(263, "latitude") = 37.790859 set ..%data(263, "longitude") = -122.402808 | |
set ..%data(264, "latitude") = 37.790864 set ..%data(264, "longitude") = -122.402768 | |
set ..%data(265, "latitude") = 37.790995 set ..%data(265, "longitude") = -122.402539 | |
set ..%data(266, "latitude") = 37.791148 set ..%data(266, "longitude") = -122.402172 | |
set ..%data(267, "latitude") = 37.791385 set ..%data(267, "longitude") = -122.401312 | |
set ..%data(268, "latitude") = 37.791405 set ..%data(268, "longitude") = -122.400776 | |
set ..%data(269, "latitude") = 37.791288 set ..%data(269, "longitude") = -122.400528 | |
set ..%data(270, "latitude") = 37.791113 set ..%data(270, "longitude") = -122.400441 | |
set ..%data(271, "latitude") = 37.791027 set ..%data(271, "longitude") = -122.400395 | |
set ..%data(272, "latitude") = 37.791094 set ..%data(272, "longitude") = -122.400311 | |
set ..%data(273, "latitude") = 37.791211 set ..%data(273, "longitude") = -122.400183 | |
set ..%data(274, "latitude") = 37.791060 set ..%data(274, "longitude") = -122.399334 | |
set ..%data(275, "latitude") = 37.790538 set ..%data(275, "longitude") = -122.398718 | |
set ..%data(276, "latitude") = 37.790095 set ..%data(276, "longitude") = -122.398086 | |
set ..%data(277, "latitude") = 37.789644 set ..%data(277, "longitude") = -122.397360 | |
set ..%data(278, "latitude") = 37.789254 set ..%data(278, "longitude") = -122.396844 | |
set ..%data(279, "latitude") = 37.788855 set ..%data(279, "longitude") = -122.396397 | |
set ..%data(280, "latitude") = 37.788483 set ..%data(280, "longitude") = -122.395963 | |
set ..%data(281, "latitude") = 37.788015 set ..%data(281, "longitude") = -122.395365 | |
set ..%data(282, "latitude") = 37.787558 set ..%data(282, "longitude") = -122.394735 | |
set ..%data(283, "latitude") = 37.787472 set ..%data(283, "longitude") = -122.394323 | |
set ..%data(284, "latitude") = 37.787630 set ..%data(284, "longitude") = -122.394025 | |
set ..%data(285, "latitude") = 37.787767 set ..%data(285, "longitude") = -122.393987 | |
set ..%data(286, "latitude") = 37.787486 set ..%data(286, "longitude") = -122.394452 | |
set ..%data(287, "latitude") = 37.786977 set ..%data(287, "longitude") = -122.395043 | |
set ..%data(288, "latitude") = 37.786583 set ..%data(288, "longitude") = -122.395552 | |
set ..%data(289, "latitude") = 37.786540 set ..%data(289, "longitude") = -122.395610 | |
set ..%data(290, "latitude") = 37.786516 set ..%data(290, "longitude") = -122.395659 | |
set ..%data(291, "latitude") = 37.786378 set ..%data(291, "longitude") = -122.395707 | |
set ..%data(292, "latitude") = 37.786044 set ..%data(292, "longitude") = -122.395362 | |
set ..%data(293, "latitude") = 37.785598 set ..%data(293, "longitude") = -122.394715 | |
set ..%data(294, "latitude") = 37.785321 set ..%data(294, "longitude") = -122.394361 | |
set ..%data(295, "latitude") = 37.785207 set ..%data(295, "longitude") = -122.394236 | |
set ..%data(296, "latitude") = 37.785751 set ..%data(296, "longitude") = -122.394062 | |
set ..%data(297, "latitude") = 37.785996 set ..%data(297, "longitude") = -122.393881 | |
set ..%data(298, "latitude") = 37.786092 set ..%data(298, "longitude") = -122.393830 | |
set ..%data(299, "latitude") = 37.785998 set ..%data(299, "longitude") = -122.393899 | |
set ..%data(300, "latitude") = 37.785114 set ..%data(300, "longitude") = -122.394365 | |
set ..%data(301, "latitude") = 37.785022 set ..%data(301, "longitude") = -122.394441 | |
set ..%data(302, "latitude") = 37.784823 set ..%data(302, "longitude") = -122.394635 | |
set ..%data(303, "latitude") = 37.784719 set ..%data(303, "longitude") = -122.394629 | |
set ..%data(304, "latitude") = 37.785069 set ..%data(304, "longitude") = -122.394176 | |
set ..%data(305, "latitude") = 37.785500 set ..%data(305, "longitude") = -122.393650 | |
set ..%data(306, "latitude") = 37.785770 set ..%data(306, "longitude") = -122.393291 | |
set ..%data(307, "latitude") = 37.785839 set ..%data(307, "longitude") = -122.393159 | |
set ..%data(308, "latitude") = 37.782651 set ..%data(308, "longitude") = -122.400628 | |
set ..%data(309, "latitude") = 37.782616 set ..%data(309, "longitude") = -122.400599 | |
set ..%data(310, "latitude") = 37.782702 set ..%data(310, "longitude") = -122.400470 | |
set ..%data(311, "latitude") = 37.782915 set ..%data(311, "longitude") = -122.400192 | |
set ..%data(312, "latitude") = 37.783137 set ..%data(312, "longitude") = -122.399887 | |
set ..%data(313, "latitude") = 37.783414 set ..%data(313, "longitude") = -122.399519 | |
set ..%data(314, "latitude") = 37.783629 set ..%data(314, "longitude") = -122.399237 | |
set ..%data(315, "latitude") = 37.783688 set ..%data(315, "longitude") = -122.399157 | |
set ..%data(316, "latitude") = 37.783716 set ..%data(316, "longitude") = -122.399106 | |
set ..%data(317, "latitude") = 37.783798 set ..%data(317, "longitude") = -122.399072 | |
set ..%data(318, "latitude") = 37.783997 set ..%data(318, "longitude") = -122.399186 | |
set ..%data(319, "latitude") = 37.784271 set ..%data(319, "longitude") = -122.399538 | |
set ..%data(320, "latitude") = 37.784577 set ..%data(320, "longitude") = -122.399948 | |
set ..%data(321, "latitude") = 37.784828 set ..%data(321, "longitude") = -122.400260 | |
set ..%data(322, "latitude") = 37.784999 set ..%data(322, "longitude") = -122.400477 | |
set ..%data(323, "latitude") = 37.785113 set ..%data(323, "longitude") = -122.400651 | |
set ..%data(324, "latitude") = 37.785155 set ..%data(324, "longitude") = -122.400703 | |
set ..%data(325, "latitude") = 37.785192 set ..%data(325, "longitude") = -122.400749 | |
set ..%data(326, "latitude") = 37.785278 set ..%data(326, "longitude") = -122.400839 | |
set ..%data(327, "latitude") = 37.785387 set ..%data(327, "longitude") = -122.400857 | |
set ..%data(328, "latitude") = 37.785478 set ..%data(328, "longitude") = -122.400890 | |
set ..%data(329, "latitude") = 37.785526 set ..%data(329, "longitude") = -122.401022 | |
set ..%data(330, "latitude") = 37.785598 set ..%data(330, "longitude") = -122.401148 | |
set ..%data(331, "latitude") = 37.785631 set ..%data(331, "longitude") = -122.401202 | |
set ..%data(332, "latitude") = 37.785660 set ..%data(332, "longitude") = -122.401267 | |
set ..%data(333, "latitude") = 37.803986 set ..%data(333, "longitude") = -122.426035 | |
set ..%data(334, "latitude") = 37.804102 set ..%data(334, "longitude") = -122.425089 | |
set ..%data(335, "latitude") = 37.804211 set ..%data(335, "longitude") = -122.424156 | |
set ..%data(336, "latitude") = 37.803861 set ..%data(336, "longitude") = -122.423385 | |
set ..%data(337, "latitude") = 37.803151 set ..%data(337, "longitude") = -122.423214 | |
set ..%data(338, "latitude") = 37.802439 set ..%data(338, "longitude") = -122.423077 | |
set ..%data(339, "latitude") = 37.801740 set ..%data(339, "longitude") = -122.422905 | |
set ..%data(340, "latitude") = 37.801069 set ..%data(340, "longitude") = -122.422785 | |
set ..%data(341, "latitude") = 37.800345 set ..%data(341, "longitude") = -122.422649 | |
set ..%data(342, "latitude") = 37.799633 set ..%data(342, "longitude") = -122.422603 | |
set ..%data(343, "latitude") = 37.799750 set ..%data(343, "longitude") = -122.421700 | |
set ..%data(344, "latitude") = 37.799885 set ..%data(344, "longitude") = -122.420854 | |
set ..%data(345, "latitude") = 37.799209 set ..%data(345, "longitude") = -122.420607 | |
set ..%data(346, "latitude") = 37.795656 set ..%data(346, "longitude") = -122.400395 | |
set ..%data(347, "latitude") = 37.795203 set ..%data(347, "longitude") = -122.400304 | |
set ..%data(348, "latitude") = 37.778738 set ..%data(348, "longitude") = -122.415584 | |
set ..%data(349, "latitude") = 37.778812 set ..%data(349, "longitude") = -122.415189 | |
set ..%data(350, "latitude") = 37.778824 set ..%data(350, "longitude") = -122.415092 | |
set ..%data(351, "latitude") = 37.778833 set ..%data(351, "longitude") = -122.414932 | |
set ..%data(352, "latitude") = 37.778834 set ..%data(352, "longitude") = -122.414898 | |
set ..%data(353, "latitude") = 37.778740 set ..%data(353, "longitude") = -122.414757 | |
set ..%data(354, "latitude") = 37.778501 set ..%data(354, "longitude") = -122.414433 | |
set ..%data(355, "latitude") = 37.778182 set ..%data(355, "longitude") = -122.414026 | |
set ..%data(356, "latitude") = 37.777851 set ..%data(356, "longitude") = -122.413623 | |
set ..%data(357, "latitude") = 37.777486 set ..%data(357, "longitude") = -122.413166 | |
set ..%data(358, "latitude") = 37.777109 set ..%data(358, "longitude") = -122.412674 | |
set ..%data(359, "latitude") = 37.776743 set ..%data(359, "longitude") = -122.412186 | |
set ..%data(360, "latitude") = 37.776440 set ..%data(360, "longitude") = -122.411800 | |
set ..%data(361, "latitude") = 37.776295 set ..%data(361, "longitude") = -122.411614 | |
set ..%data(362, "latitude") = 37.776158 set ..%data(362, "longitude") = -122.411440 | |
set ..%data(363, "latitude") = 37.775806 set ..%data(363, "longitude") = -122.410997 | |
set ..%data(364, "latitude") = 37.775422 set ..%data(364, "longitude") = -122.410484 | |
set ..%data(365, "latitude") = 37.775126 set ..%data(365, "longitude") = -122.410087 | |
set ..%data(366, "latitude") = 37.775012 set ..%data(366, "longitude") = -122.409854 | |
set ..%data(367, "latitude") = 37.775164 set ..%data(367, "longitude") = -122.409573 | |
set ..%data(368, "latitude") = 37.775498 set ..%data(368, "longitude") = -122.409180 | |
set ..%data(369, "latitude") = 37.775868 set ..%data(369, "longitude") = -122.408730 | |
set ..%data(370, "latitude") = 37.776256 set ..%data(370, "longitude") = -122.408240 | |
set ..%data(371, "latitude") = 37.776519 set ..%data(371, "longitude") = -122.407928 | |
set ..%data(372, "latitude") = 37.776539 set ..%data(372, "longitude") = -122.407904 | |
set ..%data(373, "latitude") = 37.776595 set ..%data(373, "longitude") = -122.407854 | |
set ..%data(374, "latitude") = 37.776853 set ..%data(374, "longitude") = -122.407547 | |
set ..%data(375, "latitude") = 37.777234 set ..%data(375, "longitude") = -122.407087 | |
set ..%data(376, "latitude") = 37.777644 set ..%data(376, "longitude") = -122.406558 | |
set ..%data(377, "latitude") = 37.778066 set ..%data(377, "longitude") = -122.406017 | |
set ..%data(378, "latitude") = 37.778468 set ..%data(378, "longitude") = -122.405499 | |
set ..%data(379, "latitude") = 37.778866 set ..%data(379, "longitude") = -122.404995 | |
set ..%data(380, "latitude") = 37.779295 set ..%data(380, "longitude") = -122.404455 | |
set ..%data(381, "latitude") = 37.779695 set ..%data(381, "longitude") = -122.403950 | |
set ..%data(382, "latitude") = 37.779982 set ..%data(382, "longitude") = -122.403584 | |
set ..%data(383, "latitude") = 37.780295 set ..%data(383, "longitude") = -122.403223 | |
set ..%data(384, "latitude") = 37.780664 set ..%data(384, "longitude") = -122.402766 | |
set ..%data(385, "latitude") = 37.781043 set ..%data(385, "longitude") = -122.402288 | |
set ..%data(386, "latitude") = 37.781399 set ..%data(386, "longitude") = -122.401823 | |
set ..%data(387, "latitude") = 37.781727 set ..%data(387, "longitude") = -122.401407 | |
set ..%data(388, "latitude") = 37.781853 set ..%data(388, "longitude") = -122.401247 | |
set ..%data(389, "latitude") = 37.781894 set ..%data(389, "longitude") = -122.401195 | |
set ..%data(390, "latitude") = 37.782076 set ..%data(390, "longitude") = -122.400977 | |
set ..%data(391, "latitude") = 37.782338 set ..%data(391, "longitude") = -122.400603 | |
set ..%data(392, "latitude") = 37.782666 set ..%data(392, "longitude") = -122.400133 | |
set ..%data(393, "latitude") = 37.783048 set ..%data(393, "longitude") = -122.399634 | |
set ..%data(394, "latitude") = 37.783450 set ..%data(394, "longitude") = -122.399198 | |
set ..%data(395, "latitude") = 37.783791 set ..%data(395, "longitude") = -122.398998 | |
set ..%data(396, "latitude") = 37.784177 set ..%data(396, "longitude") = -122.398959 | |
set ..%data(397, "latitude") = 37.784388 set ..%data(397, "longitude") = -122.398971 | |
set ..%data(398, "latitude") = 37.784404 set ..%data(398, "longitude") = -122.399128 | |
set ..%data(399, "latitude") = 37.784586 set ..%data(399, "longitude") = -122.399524 | |
set ..%data(400, "latitude") = 37.784835 set ..%data(400, "longitude") = -122.399927 | |
set ..%data(401, "latitude") = 37.785116 set ..%data(401, "longitude") = -122.400307 | |
set ..%data(402, "latitude") = 37.785282 set ..%data(402, "longitude") = -122.400539 | |
set ..%data(403, "latitude") = 37.785346 set ..%data(403, "longitude") = -122.400692 | |
set ..%data(404, "latitude") = 37.765769 set ..%data(404, "longitude") = -122.407201 | |
set ..%data(405, "latitude") = 37.765790 set ..%data(405, "longitude") = -122.407414 | |
set ..%data(406, "latitude") = 37.765802 set ..%data(406, "longitude") = -122.407755 | |
set ..%data(407, "latitude") = 37.765791 set ..%data(407, "longitude") = -122.408219 | |
set ..%data(408, "latitude") = 37.765763 set ..%data(408, "longitude") = -122.408759 | |
set ..%data(409, "latitude") = 37.765726 set ..%data(409, "longitude") = -122.409348 | |
set ..%data(410, "latitude") = 37.765716 set ..%data(410, "longitude") = -122.409882 | |
set ..%data(411, "latitude") = 37.765708 set ..%data(411, "longitude") = -122.410202 | |
set ..%data(412, "latitude") = 37.765705 set ..%data(412, "longitude") = -122.410253 | |
set ..%data(413, "latitude") = 37.765707 set ..%data(413, "longitude") = -122.410369 | |
set ..%data(414, "latitude") = 37.765692 set ..%data(414, "longitude") = -122.410720 | |
set ..%data(415, "latitude") = 37.765699 set ..%data(415, "longitude") = -122.411215 | |
set ..%data(416, "latitude") = 37.765687 set ..%data(416, "longitude") = -122.411789 | |
set ..%data(417, "latitude") = 37.765666 set ..%data(417, "longitude") = -122.412373 | |
set ..%data(418, "latitude") = 37.765598 set ..%data(418, "longitude") = -122.412883 | |
set ..%data(419, "latitude") = 37.765543 set ..%data(419, "longitude") = -122.413039 | |
set ..%data(420, "latitude") = 37.765532 set ..%data(420, "longitude") = -122.413125 | |
set ..%data(421, "latitude") = 37.765500 set ..%data(421, "longitude") = -122.413553 | |
set ..%data(422, "latitude") = 37.765448 set ..%data(422, "longitude") = -122.414053 | |
set ..%data(423, "latitude") = 37.765388 set ..%data(423, "longitude") = -122.414645 | |
set ..%data(424, "latitude") = 37.765323 set ..%data(424, "longitude") = -122.415250 | |
set ..%data(425, "latitude") = 37.765303 set ..%data(425, "longitude") = -122.415847 | |
set ..%data(426, "latitude") = 37.765251 set ..%data(426, "longitude") = -122.416439 | |
set ..%data(427, "latitude") = 37.765204 set ..%data(427, "longitude") = -122.417020 | |
set ..%data(428, "latitude") = 37.765172 set ..%data(428, "longitude") = -122.417556 | |
set ..%data(429, "latitude") = 37.765164 set ..%data(429, "longitude") = -122.418075 | |
set ..%data(430, "latitude") = 37.765153 set ..%data(430, "longitude") = -122.418618 | |
set ..%data(431, "latitude") = 37.765136 set ..%data(431, "longitude") = -122.419112 | |
set ..%data(432, "latitude") = 37.765129 set ..%data(432, "longitude") = -122.419378 | |
set ..%data(433, "latitude") = 37.765119 set ..%data(433, "longitude") = -122.419481 | |
set ..%data(434, "latitude") = 37.765100 set ..%data(434, "longitude") = -122.419852 | |
set ..%data(435, "latitude") = 37.765083 set ..%data(435, "longitude") = -122.420349 | |
set ..%data(436, "latitude") = 37.765045 set ..%data(436, "longitude") = -122.420930 | |
set ..%data(437, "latitude") = 37.764992 set ..%data(437, "longitude") = -122.421481 | |
set ..%data(438, "latitude") = 37.764980 set ..%data(438, "longitude") = -122.421695 | |
set ..%data(439, "latitude") = 37.764993 set ..%data(439, "longitude") = -122.421843 | |
set ..%data(440, "latitude") = 37.764986 set ..%data(440, "longitude") = -122.422255 | |
set ..%data(441, "latitude") = 37.764975 set ..%data(441, "longitude") = -122.422823 | |
set ..%data(442, "latitude") = 37.764939 set ..%data(442, "longitude") = -122.423411 | |
set ..%data(443, "latitude") = 37.764902 set ..%data(443, "longitude") = -122.424014 | |
set ..%data(444, "latitude") = 37.764853 set ..%data(444, "longitude") = -122.424576 | |
set ..%data(445, "latitude") = 37.764826 set ..%data(445, "longitude") = -122.424922 | |
set ..%data(446, "latitude") = 37.764796 set ..%data(446, "longitude") = -122.425375 | |
set ..%data(447, "latitude") = 37.764782 set ..%data(447, "longitude") = -122.425869 | |
set ..%data(448, "latitude") = 37.764768 set ..%data(448, "longitude") = -122.426089 | |
set ..%data(449, "latitude") = 37.764766 set ..%data(449, "longitude") = -122.426117 | |
set ..%data(450, "latitude") = 37.764723 set ..%data(450, "longitude") = -122.426276 | |
set ..%data(451, "latitude") = 37.764681 set ..%data(451, "longitude") = -122.426649 | |
set ..%data(452, "latitude") = 37.782012 set ..%data(452, "longitude") = -122.404200 | |
set ..%data(453, "latitude") = 37.781574 set ..%data(453, "longitude") = -122.404911 | |
set ..%data(454, "latitude") = 37.781055 set ..%data(454, "longitude") = -122.405597 | |
set ..%data(455, "latitude") = 37.780479 set ..%data(455, "longitude") = -122.406341 | |
set ..%data(456, "latitude") = 37.779996 set ..%data(456, "longitude") = -122.406939 | |
set ..%data(457, "latitude") = 37.779459 set ..%data(457, "longitude") = -122.407613 | |
set ..%data(458, "latitude") = 37.778953 set ..%data(458, "longitude") = -122.408228 | |
set ..%data(459, "latitude") = 37.778409 set ..%data(459, "longitude") = -122.408839 | |
set ..%data(460, "latitude") = 37.777842 set ..%data(460, "longitude") = -122.409501 | |
set ..%data(461, "latitude") = 37.777334 set ..%data(461, "longitude") = -122.410181 | |
set ..%data(462, "latitude") = 37.776809 set ..%data(462, "longitude") = -122.410836 | |
set ..%data(463, "latitude") = 37.776240 set ..%data(463, "longitude") = -122.411514 | |
set ..%data(464, "latitude") = 37.775725 set ..%data(464, "longitude") = -122.412145 | |
set ..%data(465, "latitude") = 37.775190 set ..%data(465, "longitude") = -122.412805 | |
set ..%data(466, "latitude") = 37.774672 set ..%data(466, "longitude") = -122.413464 | |
set ..%data(467, "latitude") = 37.774084 set ..%data(467, "longitude") = -122.414186 | |
set ..%data(468, "latitude") = 37.773533 set ..%data(468, "longitude") = -122.413636 | |
set ..%data(469, "latitude") = 37.773021 set ..%data(469, "longitude") = -122.413009 | |
set ..%data(470, "latitude") = 37.772501 set ..%data(470, "longitude") = -122.412371 | |
set ..%data(471, "latitude") = 37.771964 set ..%data(471, "longitude") = -122.411681 | |
set ..%data(472, "latitude") = 37.771479 set ..%data(472, "longitude") = -122.411078 | |
set ..%data(473, "latitude") = 37.770992 set ..%data(473, "longitude") = -122.410477 | |
set ..%data(474, "latitude") = 37.770467 set ..%data(474, "longitude") = -122.409801 | |
set ..%data(475, "latitude") = 37.770090 set ..%data(475, "longitude") = -122.408904 | |
set ..%data(476, "latitude") = 37.769657 set ..%data(476, "longitude") = -122.408103 | |
set ..%data(477, "latitude") = 37.769132 set ..%data(477, "longitude") = -122.407276 | |
set ..%data(478, "latitude") = 37.768564 set ..%data(478, "longitude") = -122.406469 | |
set ..%data(479, "latitude") = 37.767980 set ..%data(479, "longitude") = -122.405745 | |
set ..%data(480, "latitude") = 37.767380 set ..%data(480, "longitude") = -122.405299 | |
set ..%data(481, "latitude") = 37.766604 set ..%data(481, "longitude") = -122.405297 | |
set ..%data(482, "latitude") = 37.765838 set ..%data(482, "longitude") = -122.405200 | |
set ..%data(483, "latitude") = 37.765139 set ..%data(483, "longitude") = -122.405139 | |
set ..%data(484, "latitude") = 37.764457 set ..%data(484, "longitude") = -122.405094 | |
set ..%data(485, "latitude") = 37.763716 set ..%data(485, "longitude") = -122.405142 | |
set ..%data(486, "latitude") = 37.762932 set ..%data(486, "longitude") = -122.405398 | |
set ..%data(487, "latitude") = 37.762126 set ..%data(487, "longitude") = -122.405813 | |
set ..%data(488, "latitude") = 37.761344 set ..%data(488, "longitude") = -122.406215 | |
set ..%data(489, "latitude") = 37.760556 set ..%data(489, "longitude") = -122.406495 | |
set ..%data(490, "latitude") = 37.759732 set ..%data(490, "longitude") = -122.406484 | |
set ..%data(491, "latitude") = 37.758910 set ..%data(491, "longitude") = -122.406228 | |
set ..%data(492, "latitude") = 37.758182 set ..%data(492, "longitude") = -122.405695 | |
set ..%data(493, "latitude") = 37.757676 set ..%data(493, "longitude") = -122.405118 | |
set ..%data(494, "latitude") = 37.757039 set ..%data(494, "longitude") = -122.404346 | |
set ..%data(495, "latitude") = 37.756335 set ..%data(495, "longitude") = -122.403719 | |
set ..%data(496, "latitude") = 37.755503 set ..%data(496, "longitude") = -122.403406 | |
set ..%data(497, "latitude") = 37.754665 set ..%data(497, "longitude") = -122.403242 | |
set ..%data(498, "latitude") = 37.753837 set ..%data(498, "longitude") = -122.403172 | |
set ..%data(499, "latitude") = 37.752986 set ..%data(499, "longitude") = -122.403112 | |
set ..%data(500, "latitude") = 37.751266 set ..%data(500, "longitude") = -122.403355 | |
quit $$$OK | |
]]></Implementation> | |
</Method> | |
</Class> | |
<Document name="demo-HeatmapDemoDashboard.dashboard.DFI"> | |
<dashboard xmlns="http://www.intersystems.com/deepsee/library" name="HeatmapDemoDashboard" folderName="demo" title="" description="" keywords="" owner="" shared="true" public="true" locked="false" resource="" timeCreated="2013-08-27T08:21:35.93Z" createdBy="UnknownUser" category="" bookCover="" scheme="" worklistCount="0" snapTo="false" snapGrid="false" gridRows="2" gridCols="2" canResize="true" canModify="true" showTitleBar="true" titleBarOpacity="" titleBarColor="" selectedTitleBarOpacity="" selectedTitleBarColor="" titleBarTextColor="" selectedTitleBarTextColor="" titleBarFont="" companyName="" companyLogo="" companyStyle="" backgroundColor="white" backgroundImage="none" backgroundRepeat="no-repeat" backgroundSize="100% 100%" backgroundOpacity="1" widgetBorders="1px solid #F0F0F0" widgetBordersSwitch="edit" widgetBordersColor="#F0F0F0" widgetBordersStyle="solid" widgetBordersWidth="1" widgetBordersToggle="true"> | |
<widget name="map" type="portlet" subtype="DeepSee.EnhancedMapPortlet" subtypeClass="" title="" dataSource="demo/HeatmapDemoKPI.kpi" dataLink="" drillDownDataSource="" top="0" left="0" width="1152" height="599" sidebarContent="" showSidebar="false" sidebarWidth="" maximized="false" showToolbar="true" showToolbarBottomBorder="true" showToolbarOnlyWhenMaximized="false" colorToolbar="#F0F0F0" opacityToolbar="1" backgroundColor="#F0F0F0" opacity="1" theme="" dataColorList=""> | |
<property name="colorProperty"></property> | |
<property name="coordsJsFile"></property> | |
<property name="coordsProperty"></property> | |
<property name="drillUpButtonPosition">top</property> | |
<property name="fillOpacity"></property> | |
<property name="fillOpacityProperty"></property> | |
<property name="hoverOpacity"></property> | |
<property name="isClickableProperty"></property> | |
<property name="latitude">37.774546</property> | |
<property name="latitudeProperty">latitude</property> | |
<property name="longitude">-122.433523</property> | |
<property name="longitudeProperty">longitude</property> | |
<property name="mapType">SATELLITE</property> | |
<property name="markerDataProperties"></property> | |
<property name="markerIcon"></property> | |
<property name="markerIconProperty"></property> | |
<property name="markerIconSize"></property> | |
<property name="markerTitleProperty"></property> | |
<property name="markersAsHeatmap">1</property> | |
<property name="markersdraggable">1</property> | |
<property name="onaddmarker"></property> | |
<property name="onaddpolygon"></property> | |
<property name="onapplyfilters"></property> | |
<property name="onclickmarker"></property> | |
<property name="onclickpolygon"></property> | |
<property name="ondrilldown"></property> | |
<property name="ondrillup"></property> | |
<property name="polygonDataProperties"></property> | |
<property name="polygonTitleProperty"></property> | |
<property name="strokeOpacity"></property> | |
<property name="strokeWeight"></property> | |
<property name="zoom">13</property> | |
</widget> | |
</dashboard> | |
</Document></Export> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
InterSystems DeepSee heatmap demo packaged for InterSystems Developer Community discussion