annotate geotemco/js/LineOverlay/LineOverlayWidget.js @ 23:d864c58ae667

For avoiding ssl warning, changing the link, mapquest.com, from http to https
author Calvin Yeh <cyeh@mpipw-berlin.mpg.com>
date Wed, 29 Mar 2017 07:04:44 +0200
parents 8f05c2a84bba
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
8
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
1 /*
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
2 * LineOverlayWidget.js
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
3 *
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
4 * Copyright (c) 2013, Sebastian Kruse. All rights reserved.
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
5 *
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
6 * This library is free software; you can redistribute it and/or
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
7 * modify it under the terms of the GNU Lesser General Public
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
8 * License as published by the Free Software Foundation; either
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
9 * version 3 of the License, or (at your option) any later version.
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
10 *
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
11 * This library is distributed in the hope that it will be useful,
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
14 * Lesser General Public License for more details.
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
15 *
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
16 * You should have received a copy of the GNU Lesser General Public
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
17 * License along with this library; if not, write to the Free Software
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
19 * MA 02110-1301 USA
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
20 */
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
21
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
22 //calculate angle between line and x-axis
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
23 //credits: geometricnet (http://geometricnet.sourceforge.net/examples/directions.html)
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
24 bearing = function(x1,y1,x2,y2) {
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
25 b_x = 0;
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
26 b_y = 1;
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
27 a_x = x2 - x1;
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
28 a_y = y2 - y1;
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
29 angle_rad = Math.acos((a_x*b_x+a_y*b_y)/Math.sqrt(a_x*a_x+a_y*a_y)) ;
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
30 angle = 360/(2*Math.PI)*angle_rad;
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
31 if (a_x < 0) {
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
32 return 360 - angle;
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
33 } else {
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
34 return angle;
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
35 }
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
36 };
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
37
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
38 /**
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
39 * @class LineOverlayWidget
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
40 * Implementation for the widget interactions of an overlay showing lines between points
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
41 * @author Sebastian Kruse (skruse@mpiwg-berlin.mpg.de)
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
42 *
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
43 * @param {WidgetWrapper} core wrapper for interaction to other widgets
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
44 * @param {JSON} options user specified configuration that overwrites options in OverlayloaderConfig.js
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
45 */
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
46 LineOverlayWidget = function (core, options) {
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
47
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
48 this.core = core;
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
49 this.core.setWidget(this);
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
50
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
51 this.options = (new LineOverlayConfig(options)).options;
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
52
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
53 this.attachedMapWidgets = new Array();
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
54
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
55 this.lineOverlay = new LineOverlay(this);
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
56 this.lines = [];
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
57 this.multiLineFeature;
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
58
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
59 this.selected = [];
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
60 }
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
61
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
62 /**
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
63 * @param {Number} dataSet number of dataSet in dataSet array
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
64 * @param {Number} objectID number of DataObject in objects array
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
65 */
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
66
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
67 function Line(objectStart, objectEnd ) {
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
68 this.objectStart = objectStart;
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
69 this.objectEnd = objectEnd;
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
70 }
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
71
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
72 LineOverlayWidget.prototype = {
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
73
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
74 initWidget : function() {
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
75 var lineOverlayWidget = this;
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
76 this.drawLines();
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
77 },
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
78
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
79 highlightChanged : function(objects) {
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
80 if( !GeoTemConfig.highlightEvents ){
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
81 return;
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
82 }
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
83 this.drawLines(GeoTemConfig.mergeObjects(objects,this.selected));
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
84 },
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
85
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
86 selectionChanged : function(selection) {
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
87 if( !GeoTemConfig.selectionEvents ){
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
88 return;
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
89 }
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
90 if (selection.valid())
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
91 this.selected = selection.objects;
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
92 else
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
93 this.selected = [];
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
94
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
95 this.drawLines(this.selected);
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
96 },
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
97
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
98 triggerHighlight : function(item) {
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
99 },
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
100
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
101 tableSelection : function() {
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
102 },
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
103
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
104 deselection : function() {
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
105 },
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
106
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
107 filtering : function() {
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
108 },
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
109
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
110 inverseFiltering : function() {
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
111 },
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
112
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
113 triggerRefining : function() {
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
114 },
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
115
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
116 reset : function() {
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
117 },
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
118
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
119 //identical to the function in PieChartWidget
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
120 //here cause widgets may be used independed of each other
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
121 getElementData : function(dataObject, watchedColumn, selectionFunction) {
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
122 var columnData;
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
123 if (watchedColumn.indexOf("[") === -1){
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
124 columnData = dataObject[watchedColumn];
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
125 if (typeof columnData === "undefined"){
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
126 columnData = dataObject.tableContent[watchedColumn];
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
127 };
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
128 } else {
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
129 try {
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
130 var columnName = watchedColumn.split("[")[0];
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
131 var IndexAndAttribute = watchedColumn.split("[")[1];
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
132 if (IndexAndAttribute.indexOf("]") != -1){
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
133 var arrayIndex = IndexAndAttribute.split("]")[0];
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
134 var attribute = IndexAndAttribute.split("]")[1];
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
135
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
136 if (typeof attribute === "undefined")
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
137 columnData = dataObject[columnName][arrayIndex];
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
138 else{
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
139 attribute = attribute.split(".")[1];
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
140 columnData = dataObject[columnName][arrayIndex][attribute];
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
141 }
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
142 }
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
143 } catch(e) {
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
144 if (typeof console !== undefined)
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
145 console.error(e);
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
146
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
147 delete columnData;
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
148 }
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
149 }
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
150
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
151 if ( (typeof columnData !== "undefined") && (typeof selectionFunction !== "undefined") )
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
152 columnData = selectionFunction(columnData);
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
153
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
154 return(columnData);
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
155 },
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
156
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
157 matchColumns : function(dataSet1, columnName1, dataSet2, columnName2) {
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
158 var lineOverlayWidget = this;
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
159 lineOverlayWidget.lines;
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
160 $(GeoTemConfig.datasets[dataSet1].objects).each(function(){
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
161 var object1 = this;
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
162 var data1 = lineOverlayWidget.getElementData(object1, columnName1);
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
163 //split because there could be multiple comma separated values
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
164 data1 = data1.split(",");
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
165
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
166 $(GeoTemConfig.datasets[dataSet2].objects).each(function(){
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
167 var object2 = this;
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
168 //avoid reflexive and double entries
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
169 if ((columnName1 === columnName2)&&(dataSet1 === dataSet2)&&(object1.index<=object2.index))
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
170 return;
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
171 var data2 = lineOverlayWidget.getElementData(object2, columnName2);
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
172 //split because there could be multiple comma separated values
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
173 data2 = data2.split(",");
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
174
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
175 //check if at least one pair matches
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
176 for(var i = 0; i < data1.length; i++ ){
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
177 var firstVal = data1[i];
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
178 if (data2.indexOf(firstVal) !== -1){
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
179 lineOverlayWidget.lines.push(new Line(object1, object2));
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
180 break;
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
181 }
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
182 }
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
183 });
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
184 });
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
185 },
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
186
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
187 getXYofObject : function(cs,dataObject){
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
188 //iterata over datasets
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
189 var x,y;
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
190 var found = false;
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
191 $(cs).each(function(){
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
192 //iterate over circles
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
193 $(this).each(function(){
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
194 var circle = this;
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
195 //iterata over objects in this circle;
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
196 var index = $.inArray(dataObject,circle.elements);
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
197 if (index !== -1){
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
198 x = circle.feature.geometry.x;
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
199 y = circle.feature.geometry.y;
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
200 found = true;
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
201 return false;
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
202 }
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
203 });
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
204 //break loop
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
205 if (found === true)
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
206 return false;
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
207 });
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
208
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
209 return ({x:x,y:y});
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
210 },
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
211
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
212 /**
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
213 * @param {DataObjects[][]} objects set of objects to limit to
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
214 */
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
215 drawLines : function(objects) {
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
216 var flatObjects = [];
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
217 if ( (typeof objects !== "undefined") &&
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
218 (objects instanceof Array) &&
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
219 (objects.length > 0) ) {
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
220 $(objects).each(function(){
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
221 $.merge(flatObjects, this);
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
222 });
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
223 }
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
224 var lineOverlayWidget = this;
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
225
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
226 $(lineOverlayWidget.attachedMapWidgets).each(function(){
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
227 var mapWidget = this.mapWidget;
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
228 var lineLayer = this.lineLayer;
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
229
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
230 var map = mapWidget.openlayersMap;
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
231 var cs = mapWidget.mds.getObjectsByZoom();
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
232
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
233 mapWidget.openlayersMap.setLayerIndex(lineLayer, 99);
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
234
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
235 lineLayer.removeAllFeatures();
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
236
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
237 var lineElements = [];
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
238
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
239 var checkIfLineInPreset = function(){return false;};
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
240 if (lineOverlayWidget.options.showLines === "inbound"){
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
241 checkIfLineInPreset = function(objectStart,objectEnd,flatObjects){
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
242 return ($.inArray(objectEnd, flatObjects) === -1);
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
243 };
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
244 } else if (lineOverlayWidget.options.showLines === "outbound"){
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
245 checkIfLineInPreset = function(objectStart,objectEnd,flatObjects){
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
246 return ($.inArray(objectStart, flatObjects) === -1);
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
247 };
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
248 } else /*if (lineOverlayWidget.options.showLines === "both")*/{
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
249 checkIfLineInPreset = function(objectStart,objectEnd,flatObjects){
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
250 return ( ($.inArray(objectStart, flatObjects) === -1) &&
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
251 ($.inArray(objectEnd, flatObjects) === -1) );
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
252 };
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
253 }
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
254
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
255 $(lineOverlayWidget.lines).each(function(){
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
256 var line = this;
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
257
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
258 if ((lineOverlayWidget.options.onlyShowSelectedOrHighlighted === true) || (flatObjects.length > 0)){
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
259 //if objects are limited, check whether start or end are within
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
260 if (checkIfLineInPreset(line.objectStart, line.objectEnd, flatObjects))
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
261 return;
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
262 }
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
263 //get XY-val of start Object
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
264 var xyStart = lineOverlayWidget.getXYofObject(cs, line.objectStart);
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
265 //continue if no valid XY-coords where found
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
266 if ( (typeof xyStart.x === "undefined") && (typeof xyStart.y === "undefined") )
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
267 return;
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
268 var xyEnd = lineOverlayWidget.getXYofObject(cs, line.objectEnd);
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
269 //continue if no valid XY-coords where found
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
270 if ( (typeof xyEnd.x === "undefined") && (typeof xyEnd.y === "undefined") )
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
271 return;
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
272
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
273 //do not draw 0-length lines (from same circle)
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
274 if ( (xyStart.x === xyEnd.x) && (xyStart.y === xyEnd.y) )
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
275 return;
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
276
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
277 var points = new Array(
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
278 new OpenLayers.Geometry.Point(xyStart.x, xyStart.y),
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
279 new OpenLayers.Geometry.Point(xyEnd.x, xyEnd.y)
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
280 );
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
281
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
282 var line = new OpenLayers.Geometry.LineString(points);
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
283
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
284 //Only draw each line once. Unfortunately this check is faster
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
285 //than drawing multiple lines.
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
286 var found = false;
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
287 $(lineElements).each(function(){
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
288 var checkLine = this.line;
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
289 if (( (checkLine.components[0].x === line.components[0].x) &&
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
290 (checkLine.components[0].y === line.components[0].y) &&
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
291 (checkLine.components[1].x === line.components[1].x) &&
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
292 (checkLine.components[1].y === line.components[1].y) ) ||
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
293 // if lines are "directional" (arrows) the opposite one isn't the same anymore!
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
294 ( (lineOverlayWidget.options.showArrows === false) &&
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
295 (checkLine.components[0].x === line.components[1].x) &&
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
296 (checkLine.components[0].y === line.components[1].y) &&
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
297 (checkLine.components[1].x === line.components[0].x) &&
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
298 (checkLine.components[1].y === line.components[0].y) ) ){
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
299 found = true;
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
300 //increase width of this line
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
301 this.width++;
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
302 //and don't draw it again
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
303 return false;
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
304 }
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
305 });
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
306
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
307 if (found === true)
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
308 return;
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
309
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
310 lineElements.push({line:line,width:1});
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
311 });
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
312
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
313 $(lineElements).each(function(){
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
314 var line = this.line;
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
315 var width = this.width;
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
316
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
317 if (lineOverlayWidget.options.showArrows === true){
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
318 var xyStart = line.components[0];
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
319 var xyEnd = line.components[1];
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
320 var arrowFeature = new OpenLayers.Feature.Vector(
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
321 new OpenLayers.Geometry.Point(xyEnd.x-((xyEnd.x-xyStart.x)*0.03), xyEnd.y-((xyEnd.y-xyStart.y)*0.03)),
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
322 {
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
323 type: "triangle",
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
324 angle: bearing(xyStart.x,xyStart.y,xyEnd.x,xyEnd.y),
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
325 width: width+1
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
326 }
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
327 );
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
328 lineLayer.addFeatures(arrowFeature);
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
329 }
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
330
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
331 var lineFeature = new OpenLayers.Feature.Vector(line,{width:width});
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
332 lineLayer.addFeatures(lineFeature);
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
333 });
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
334 });
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
335 },
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
336
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
337 attachMapWidget : function(mapWidget) {
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
338 var styles = new OpenLayers.StyleMap({
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
339 "default": {
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
340 graphicName: "${type}",
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
341 rotation: "${angle}",
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
342 pointRadius: "${width}",
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
343 strokeColor: '#0000ff',
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
344 strokeOpacity: 0.5,
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
345 strokeWidth: "${width}",
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
346 fillOpacity: 1
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
347 }
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
348 });
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
349
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
350 var lineOverlayWidget = this;
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
351 var lineLayer = new OpenLayers.Layer.Vector("Line Layer", {
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
352 styleMap: styles,
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
353 isBaseLayer:false
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
354 });
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
355 mapWidget.openlayersMap.addLayer(lineLayer);
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
356 mapWidget.openlayersMap.setLayerIndex(lineLayer, 99);
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
357 this.attachedMapWidgets.push({mapWidget:mapWidget,lineLayer:lineLayer});
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
358 //register zoom event
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
359 mapWidget.openlayersMap.events.register("zoomend", lineOverlayWidget, function(){
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
360 this.drawLines(this.selected);
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
361 });
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
362 }
8f05c2a84bba Apply new platin and Add tree layers
nylin@mpiwg-berlin.mpg.de
parents:
diff changeset
363 };