Commit c89f148fe31351a42819fc73006738e860961751

Authored by Edmar Moretti
1 parent f6ce28b0

Atualização do Wicket no editor vetorial googlemaps e atualização da interface d…

…o editor do sistema metaestat
admin/php/classe_metaestat.php
... ... @@ -1929,7 +1929,7 @@ class Metaestat{
1929 1929 }
1930 1930 $data = implode("||",$data);
1931 1931 /**
1932   - * @TODO falta a hora
  1932 + * TODO falta a hora
1933 1933 */
1934 1934 return "to_date($data,'$tipodata')";
1935 1935 }
... ...
classesjs/classe_editorgm.js
... ... @@ -384,7 +384,7 @@ i3GEO.editorGM = {
384 384 */
385 385 captura: function(){
386 386 var temp,tema="",regiao="",p,par,
387   - aguarde = $i("janelaEditorLimites_imagemCabecalho");
  387 + aguarde = $i("i3GEOjanelaEditor_imagemCabecalho");
388 388 if(!$i("i3geoCartoRegioesEditaveis")){
389 389 i3GEO.eventos.MOUSECLIQUE.remove("i3GEO.editorGM.capturaPoligonoTema.captura()");
390 390 }
... ... @@ -396,7 +396,7 @@ i3GEO.editorGM = {
396 396 valorid = "",
397 397 colunanome = i3GEO.editorGM.descregioes["a_"+regiao]["colunanomeregiao"],
398 398 valornome = "",
399   - aguarde = $i("janelaEditorLimites_imagemCabecalho");
  399 + aguarde = $i("i3GEOjanelaEditor_imagemCabecalho");
400 400 if(aguarde){
401 401 aguarde.style.visibility = "hidden";
402 402 }
... ... @@ -1159,311 +1159,728 @@ google.maps.Polygon.prototype.type = 'polygon';
1159 1159 google.maps.Rectangle.prototype.type = 'rectangle';
1160 1160 google.maps.Circle.prototype.type = 'circle';
1161 1161  
1162   -//TODO atualizar
1163   -/**
1164   - * An object of framework-dependent construction methods used to generate
1165   - * objects belonging to the various geometry classes of the framework.
1166   - */
1167   -Wkt.Wkt.prototype.construct = {
1168   - /**
1169   - * Creates the framework's equivalent point geometry object.
1170   - * @param config {Object} An optional properties hash the object should use
1171   - * @param component {Object} An optional component to build from
1172   - * @return {google.maps.Marker}
1173   - */
1174   - 'point': function (config, component) {
1175   - var c = component || this.components;
1176   -
1177   - config = config || {};
1178   -
1179   - config.position = new google.maps.LatLng(c[0].y, c[0].x);
1180   -
1181   - return new google.maps.Marker(config);
1182   - },
1183   -
1184   - /**
1185   - * Creates the framework's equivalent multipoint geometry object.
1186   - * @param config {Object} An optional properties hash the object should use
1187   - * @return {Array} Array containing multiple google.maps.Marker
1188   - */
1189   - 'multipoint': function (config) {
1190   - var i, c, arr;
1191   -
1192   - c = this.components;
1193   -
1194   - config = config || {};
1195   -
1196   - arr = [];
1197   -
1198   - for (i = 0; i < c.length; i += 1) {
1199   - arr.push(this.construct.point(config, c[i]));
1200   - }
1201   -
1202   - return arr;
1203   - },
1204   -
1205   - /**
1206   - * Creates the framework's equivalent multipoint geometry object.
1207   - * @param config {Object} An optional properties hash the object should use
1208   - * @param component {Object} An optional component to build from
1209   - * @return {google.maps.Polyline}
1210   - */
1211   - 'linestring': function (config, component) {
1212   - var i, c;
1213   -
1214   - c = component || this.components;
1215   -
1216   - config = config || {
1217   - editable: false
1218   - };
1219   -
1220   - config.path = [];
1221   -
1222   - for (i = 0; i < c.length; i += 1) {
1223   - config.path.push(new google.maps.LatLng(c[i].y, c[i].x));
1224   - }
1225   -
1226   - return new google.maps.Polyline(config);
1227   - },
1228   -
1229   - /**
1230   - * Creates the framework's equivalent multilinestring geometry object.
1231   - * @param config {Object} An optional properties hash the object should use
1232   - * @return {Array} Array containing multiple google.maps.Polyline instances
1233   - */
1234   - 'multilinestring': function (config) {
1235   - var i, c, arr;
1236   -
1237   - c = this.components;
1238   -
1239   - config = config || {
1240   - editable: false
1241   - };
1242   -
1243   - config.path = [];
1244   -
1245   - arr = [];
1246   -
1247   - for (i = 0; i < c.length; i += 1) {
1248   - arr.push(this.construct.linestring(config, c[i]));
1249   - }
1250   -
1251   - return arr;
1252   - },
1253   -
1254   - /**
1255   - * Creates the framework's equivalent polygon geometry object.
1256   - * @param config {Object} An optional properties hash the object should use
1257   - * @return {google.maps.Polygon}
1258   - */
1259   - 'polygon': function (config) {
1260   - var j, k, c, rings, verts;
1261   -
1262   - c = this.components;
1263   -
1264   - config = config || {
1265   - editable: false // Editable geometry off by default
1266   - };
1267   -
1268   - config.paths = [];
  1162 +/** @license
  1163 +*
  1164 +* Copyright (C) 2012 K. Arthur Endsley (kaendsle@mtu.edu)
  1165 +* Michigan Tech Research Institute (MTRI)
  1166 +* 3600 Green Court, Suite 100, Ann Arbor, MI, 48105
  1167 +*
  1168 +* This program is free software: you can redistribute it and/or modify
  1169 +* it under the terms of the GNU General Public License as published by
  1170 +* the Free Software Foundation, either version 3 of the License, or
  1171 +* (at your option) any later version.
  1172 +*
  1173 +* This program is distributed in the hope that it will be useful,
  1174 +* but WITHOUT ANY WARRANTY; without even the implied warranty of
  1175 +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  1176 +* GNU General Public License for more details.
  1177 +*
  1178 +* You should have received a copy of the GNU General Public License
  1179 +* along with this program. If not, see <http://www.gnu.org/licenses/>.
  1180 +*
  1181 +*/
  1182 +(function (Wkt) {
  1183 +
  1184 + /**
  1185 + * @augments Wkt.Wkt
  1186 + * A framework-dependent flag, set for each Wkt.Wkt() instance, that indicates
  1187 + * whether or not a closed polygon geometry should be interpreted as a rectangle.
  1188 + */
  1189 + Wkt.Wkt.prototype.isRectangle = false;
  1190 +
  1191 + /**
  1192 + * @augments Wkt.Wkt
  1193 + * An object of framework-dependent construction methods used to generate
  1194 + * objects belonging to the various geometry classes of the framework.
  1195 + */
  1196 + Wkt.Wkt.prototype.construct = {
  1197 + /**
  1198 + * Creates the framework's equivalent point geometry object.
  1199 + * @param config {Object} An optional properties hash the object should use
  1200 + * @param component {Object} An optional component to build from
  1201 + * @return {google.maps.Marker}
  1202 + */
  1203 + point: function (config, component) {
  1204 + var c = component || this.components;
  1205 +
  1206 + config = config || {};
  1207 +
  1208 + config.position = new google.maps.LatLng(c[0].y, c[0].x);
  1209 +
  1210 + return new google.maps.Marker(config);
  1211 + },
  1212 +
  1213 + /**
  1214 + * Creates the framework's equivalent multipoint geometry object.
  1215 + * @param config {Object} An optional properties hash the object should use
  1216 + * @return {Array} Array containing multiple google.maps.Marker
  1217 + */
  1218 + multipoint: function (config) {
  1219 + var i, c, arr;
  1220 +
  1221 + c = this.components;
  1222 +
  1223 + config = config || {};
  1224 +
  1225 + arr = [];
  1226 +
  1227 + for (i = 0; i < c.length; i += 1) {
  1228 + arr.push(this.construct.point(config, c[i]));
  1229 + }
  1230 +
  1231 + return arr;
  1232 + },
  1233 +
  1234 + /**
  1235 + * Creates the framework's equivalent linestring geometry object.
  1236 + * @param config {Object} An optional properties hash the object should use
  1237 + * @param component {Object} An optional component to build from
  1238 + * @return {google.maps.Polyline}
  1239 + */
  1240 + linestring: function (config, component) {
  1241 + var i, c;
  1242 +
  1243 + c = component || this.components;
  1244 +
  1245 + config = config || {
  1246 + editable: false
  1247 + };
  1248 +
  1249 + config.path = [];
  1250 +
  1251 + for (i = 0; i < c.length; i += 1) {
  1252 + config.path.push(new google.maps.LatLng(c[i].y, c[i].x));
  1253 + }
  1254 +
  1255 + return new google.maps.Polyline(config);
  1256 + },
  1257 +
  1258 + /**
  1259 + * Creates the framework's equivalent multilinestring geometry object.
  1260 + * @param config {Object} An optional properties hash the object should use
  1261 + * @return {Array} Array containing multiple google.maps.Polyline instances
  1262 + */
  1263 + multilinestring: function (config) {
  1264 + var i, c, arr;
  1265 +
  1266 + c = this.components;
  1267 +
  1268 + config = config || {
  1269 + editable: false
  1270 + };
  1271 +
  1272 + config.path = [];
  1273 +
  1274 + arr = [];
  1275 +
  1276 + for (i = 0; i < c.length; i += 1) {
  1277 + arr.push(this.construct.linestring(config, c[i]));
  1278 + }
  1279 +
  1280 + return arr;
  1281 + },
  1282 +
  1283 + /**
  1284 + * Creates the framework's equivalent Box or Rectangle geometry object.
  1285 + * @param config {Object} An optional properties hash the object should use
  1286 + * @param component {Object} An optional component to build from
  1287 + * @return {google.maps.Rectangle}
  1288 + */
  1289 + box: function (config, component) {
  1290 + var c = component || this.components;
  1291 +
  1292 + config = config || {};
  1293 +
  1294 + config.bounds = new google.maps.LatLngBounds(
  1295 + new google.maps.LatLng(c[0].y, c[0].x),
  1296 + new google.maps.LatLng(c[1].y, c[1].x));
  1297 +
  1298 + return new google.maps.Rectangle(config);
  1299 + },
1269 1300  
1270   - rings = [];
1271   - for (j = 0; j < c.length; j += 1) { // For each ring...
1272   -
1273   - verts = [];
1274   - for (k = 0; k < c[j].length; k += 1) { // For each vertex...
1275   - verts.push(new google.maps.LatLng(c[j][k].y, c[j][k].x));
1276   -
1277   - } // eo for each vertex
1278   -
1279   - if (j !== 0) { // Reverse the order of coordinates in inner rings
1280   - if (config.reverseInnerPolygons == null || config.reverseInnerPolygons) {
1281   - verts.reverse();
1282   - }
1283   - }
1284   -
1285   - rings.push(verts);
1286   - } // eo for each ring
1287   -
1288   - config.paths = config.paths.concat(rings);
1289   -
1290   - if (this.isRectangle) {
1291   - console.log('Rectangles are not yet supported; set the isRectangle property to false (default).');
1292   - } else {
1293   - return new google.maps.Polygon(config);
1294   - }
1295   - },
1296   -
1297   - /**
1298   - * Creates the framework's equivalent multipolygon geometry object.
1299   - * @param config {Object} An optional properties hash the object should use
1300   - * @return {Array} Array containing multiple google.maps.Polygon
1301   - */
1302   - 'multipolygon': function (config) {
1303   - var i, j, k, c, rings, verts;
1304   -
1305   - c = this.components;
1306   -
1307   - config = config || {
1308   - editable: false // Editable geometry off by default
1309   - };
1310   -
1311   - config.paths = []; // Must ensure this property is available
1312   -
1313   - for (i = 0; i < c.length; i += 1) { // For each polygon...
1314   -
1315   - rings = [];
1316   - for (j = 0; j < c[i].length; j += 1) { // For each ring...
1317   -
1318   - verts = [];
1319   - for (k = 0; k < c[i][j].length; k += 1) { // For each vertex...
1320   - verts.push(new google.maps.LatLng(c[i][j][k].y, c[i][j][k].x));
1321   -
1322   - } // eo for each vertex
1323   -
1324   - /* // This is apparently not needed in multipolygon cases
1325   - if (j !== 0) { // Reverse the order of coordinates in inner rings
1326   - verts.reverse();
1327   - }
1328   - */
1329   - rings.push(verts);
1330   - } // eo for each ring
1331   -
1332   - config.paths = config.paths.concat(rings);
1333   -
1334   - } // eo for each polygon
1335   -
1336   - return new google.maps.Polygon(config);
1337   - }
1338   -
1339   -};
1340   -
1341   -/**
1342   - * A framework-dependent deconstruction method used to generate internal
1343   - * geometric representations from instances of framework geometry. This method
1344   - * uses object detection to attempt to classify members of framework geometry
1345   - * classes into the standard WKT types.
1346   - * @param obj {Object} An instance of one of the framework's geometry classes
1347   - * @return {Object} A hash of the 'type' and 'components' thus derived
1348   - */
1349   -Wkt.Wkt.prototype.deconstruct = function (obj) {
1350   - var i, j, verts, rings, tmp;
1351   -
1352   - // google.maps.Marker //////////////////////////////////////////////////////
1353   - if (obj.getPosition && typeof obj.getPosition === 'function') {
1354   - // Only Markers, among all overlays, have the getPosition property
1355   -
1356   - return {
1357   - type: 'point',
1358   - components: [{
1359   - x: obj.getPosition().lng(),
1360   - y: obj.getPosition().lat()
1361   - }]
1362   - };
1363   -
1364   - // google.maps.Polyline ////////////////////////////////////////////////////
1365   - } else if (obj.getPath && !obj.getPaths) {
1366   - // Polylines have a single path (getPath) not paths (getPaths)
1367   -
1368   - verts = [];
1369   - for (i = 0; i < obj.getPath().length; i += 1) {
1370   - tmp = obj.getPath().getAt(i);
1371   - verts.push({
1372   - x: tmp.lng(),
1373   - y: tmp.lat()
1374   - });
1375   - }
1376   -
1377   - return {
1378   - type: 'linestring',
1379   - components: verts
1380   - };
1381   -
1382   - // google.maps.Polygon /////////////////////////////////////////////////////
1383   - } else if (obj.getPaths) {
1384   - // Polygon is the only class with the getPaths property
1385   -
1386   - // TODO Polygons with holes cannot be distinguished from multipolygons
1387   - rings = [];
1388   - for (i = 0; i < obj.getPaths().length; i += 1) { // For each polygon (ring)...
1389   - tmp = obj.getPaths().getAt(i);
1390   -
1391   - verts = [];
1392   - for (j = 0; j < obj.getPaths().getAt(i).length; j += 1) { // For each vertex...
1393   - verts.push({
1394   - x: tmp.getAt(j).lng(),
1395   - y: tmp.getAt(j).lat()
1396   - });
1397   - }
1398   -
1399   - verts.push({ // Add the first coordinate again for closure
1400   - x: tmp.getAt(0).lng(),
1401   - y: tmp.getAt(0).lat()
1402   - });
1403   -
1404   - // Since we can't distinguish between single polygons with holes
1405   - // and multipolygons, we always create multipolygons
1406   - if (obj.getPaths().length > 1) {
1407   - verts = [verts]; // Wrap multipolygons once more (collection)
1408   - }
1409   -
1410   - rings.push(verts);
1411   - }
1412   -
1413   - return {
1414   - type: 'polygon',
1415   - components: rings
1416   - };
1417   -
1418   - // google.maps.Rectangle ///////////////////////////////////////////////////
1419   - } else if (obj.getBounds && !obj.getRadius) {
1420   - // Rectangle is only overlay class with getBounds property and not getRadius property
1421   -
1422   - tmp = obj.getBounds();
1423   - return {
1424   - type: 'polygon',
1425   - isRectangle: true,
1426   - components: [
1427   - [
1428   - { // NW corner
1429   - x: tmp.getSouthWest().lng(),
1430   - y: tmp.getNorthEast().lat()
1431   - },
1432   - { // NE corner
1433   - x: tmp.getNorthEast().lng(),
1434   - y: tmp.getNorthEast().lat()
1435   - },
1436   - { // SE corner
1437   - x: tmp.getNorthEast().lng(),
1438   - y: tmp.getSouthWest().lat()
1439   - },
1440   - { // SW corner
1441   - x: tmp.getSouthWest().lng(),
1442   - y: tmp.getSouthWest().lat()
1443   - },
1444   - { // NW corner (again, for closure)
1445   - x: tmp.getSouthWest().lng(),
1446   - y: tmp.getNorthEast().lat()
1447   - }
1448   - ]
1449   - ]
1450   - };
1451   -
1452   - // google.maps.Circle //////////////////////////////////////////////////////
1453   - } else if (obj.getBounds && obj.getRadius) {
1454   - // Circle is the only overlay class with both the getBounds and getRadius properties
1455   -
1456   - console.log('Deconstruction of google.maps.Circle objects is not yet supported');
1457   -
1458   - } else {
1459   - console.log('The passed object does not have any recognizable properties.');
1460   - }
1461   -
1462   -};
1463   -
1464   -/**
1465   - * A framework-dependent flag, set for each Wkt.Wkt() instance, that indicates
1466   - * whether or not a closed polygon geometry should be interpreted as a rectangle.
1467   - */
1468   -Wkt.Wkt.prototype.isRectangle = false;
  1301 + /**
  1302 + * Creates the framework's equivalent polygon geometry object.
  1303 + * @param config {Object} An optional properties hash the object should use
  1304 + * @param component {Object} An optional component to build from
  1305 + * @return {google.maps.Polygon}
  1306 + */
  1307 + polygon: function (config, component) {
  1308 + var j, k, c, rings, verts;
1469 1309  
  1310 + c = component || this.components;
  1311 +
  1312 + config = config || {
  1313 + editable: false // Editable geometry off by default
  1314 + };
  1315 +
  1316 + config.paths = [];
  1317 +
  1318 + rings = [];
  1319 + for (j = 0; j < c.length; j += 1) { // For each ring...
  1320 +
  1321 + verts = [];
  1322 + // NOTE: We iterate to one (1) less than the Array length to skip the last vertex
  1323 + for (k = 0; k < c[j].length - 1; k += 1) { // For each vertex...
  1324 + verts.push(new google.maps.LatLng(c[j][k].y, c[j][k].x));
  1325 +
  1326 + } // eo for each vertex
  1327 +
  1328 + if (j !== 0) { // Reverse the order of coordinates in inner rings
  1329 + if (config.reverseInnerPolygons == null || config.reverseInnerPolygons) {
  1330 + verts.reverse();
  1331 + }
  1332 + }
  1333 +
  1334 + rings.push(verts);
  1335 + } // eo for each ring
  1336 +
  1337 + config.paths = config.paths.concat(rings);
  1338 +
  1339 + if (this.isRectangle) {
  1340 + return (function () {
  1341 + var bounds, v;
  1342 +
  1343 + bounds = new google.maps.LatLngBounds();
  1344 +
  1345 + for (v in rings[0]) { // Ought to be only 1 ring in a Rectangle
  1346 + if (rings[0].hasOwnProperty(v)) {
  1347 + bounds.extend(rings[0][v]);
  1348 + }
  1349 + }
  1350 +
  1351 + return new google.maps.Rectangle({
  1352 + bounds: bounds
  1353 + });
  1354 + }());
  1355 + } else {
  1356 + return new google.maps.Polygon(config);
  1357 + }
  1358 + },
  1359 +
  1360 + /**
  1361 + * Creates the framework's equivalent multipolygon geometry object.
  1362 + * @param config {Object} An optional properties hash the object should use
  1363 + * @return {Array} Array containing multiple google.maps.Polygon
  1364 + */
  1365 + multipolygon: function (config) {
  1366 + var i, c, arr;
  1367 +
  1368 + c = this.components;
  1369 +
  1370 + config = config || {
  1371 + editable: false
  1372 + };
  1373 +
  1374 + config.path = [];
  1375 +
  1376 + arr = [];
  1377 +
  1378 + for (i = 0; i < c.length; i += 1) {
  1379 + arr.push(this.construct.polygon(config, c[i]));
  1380 + }
  1381 +
  1382 + return arr;
  1383 + }
  1384 +
  1385 + };
  1386 +
  1387 + /**
  1388 + * @augments Wkt.Wkt
  1389 + * A framework-dependent deconstruction method used to generate internal
  1390 + * geometric representations from instances of framework geometry. This method
  1391 + * uses object detection to attempt to classify members of framework geometry
  1392 + * classes into the standard WKT types.
  1393 + * @param obj {Object} An instance of one of the framework's geometry classes
  1394 + * @param multiFlag {Boolean} If true, then the deconstructor will be forced to return a MultiGeometry (multipoint, multilinestring or multipolygon)
  1395 + * @return {Object} A hash of the 'type' and 'components' thus derived, plus the WKT string of the feature.
  1396 + */
  1397 + Wkt.Wkt.prototype.deconstruct = function (obj, multiFlag) {
  1398 + var features, i, j, multiFlag, verts, rings, sign, tmp, response, lat, lng;
  1399 +
  1400 + // Shortcut to signed area function (determines clockwise vs counter-clock)
  1401 + if (google.maps.geometry) {
  1402 + sign = google.maps.geometry.spherical.computeSignedArea;
  1403 + };
  1404 +
  1405 + // google.maps.LatLng //////////////////////////////////////////////////////
  1406 + if (obj.constructor === google.maps.LatLng) {
  1407 +
  1408 + response = {
  1409 + type: 'point',
  1410 + components: [{
  1411 + x: obj.lng(),
  1412 + y: obj.lat()
  1413 + }]
  1414 + };
  1415 + return response;
  1416 + }
  1417 +
  1418 + // google.maps.Point //////////////////////////////////////////////////////
  1419 + if (obj.constructor === google.maps.Point) {
  1420 + response = {
  1421 + type: 'point',
  1422 + components: [{
  1423 + x: obj.x,
  1424 + y: obj.y
  1425 + }]
  1426 + };
  1427 + return response;
  1428 + }
  1429 +
  1430 + // google.maps.Marker //////////////////////////////////////////////////////
  1431 + if (obj.constructor === google.maps.Marker) {
  1432 + response = {
  1433 + type: 'point',
  1434 + components: [{
  1435 + x: obj.getPosition().lng(),
  1436 + y: obj.getPosition().lat()
  1437 + }]
  1438 + };
  1439 + return response;
  1440 + }
  1441 +
  1442 + // google.maps.Polyline ////////////////////////////////////////////////////
  1443 + if (obj.constructor === google.maps.Polyline) {
  1444 +
  1445 + verts = [];
  1446 + for (i = 0; i < obj.getPath().length; i += 1) {
  1447 + tmp = obj.getPath().getAt(i);
  1448 + verts.push({
  1449 + x: tmp.lng(),
  1450 + y: tmp.lat()
  1451 + });
  1452 + }
  1453 + response = {
  1454 + type: 'linestring',
  1455 + components: verts
  1456 + };
  1457 + return response;
  1458 +
  1459 + }
  1460 +
  1461 + // google.maps.Polygon /////////////////////////////////////////////////////
  1462 + if (obj.constructor === google.maps.Polygon) {
  1463 +
  1464 + rings = [];
  1465 +
  1466 + if (multiFlag === undefined) {
  1467 + multiFlag = (function () {
  1468 + var areas, i, l;
  1469 +
  1470 + l = obj.getPaths().length;
  1471 + if (l <= 1) { // Trivial; this is a single polygon
  1472 + return false;
  1473 + }
  1474 +
  1475 + if (l === 2) {
  1476 + // If clockwise*clockwise or counter*counter, i.e.
  1477 + // (-1)*(-1) or (1)*(1), then result would be positive
  1478 + if (sign(obj.getPaths().getAt(0)) * sign(obj.getPaths().getAt(1)) < 0) {
  1479 + return false; // Most likely single polygon with 1 hole
  1480 + }
  1481 +
  1482 + return true;
  1483 + }
  1484 +
  1485 + // Must be longer than 3 polygons at this point...
  1486 + areas = obj.getPaths().getArray().map(function (k) {
  1487 + return sign(k) / Math.abs(sign(k)); // Unit normalization (outputs 1 or -1)
  1488 + });
  1489 +
  1490 + // If two clockwise or two counter-clockwise rings are found
  1491 + // (at different indices)...
  1492 + if (areas.indexOf(areas[0]) !== areas.lastIndexOf(areas[0])) {
  1493 + multiFlag = true; // Flag for holes in one or more polygons
  1494 + return true;
  1495 + }
  1496 +
  1497 + return false;
  1498 +
  1499 + }());
  1500 + }
  1501 +
  1502 + for (i = 0; i < obj.getPaths().length; i += 1) { // For each polygon (ring)...
  1503 + tmp = obj.getPaths().getAt(i);
  1504 + verts = [];
  1505 + for (j = 0; j < obj.getPaths().getAt(i).length; j += 1) { // For each vertex...
  1506 + verts.push({
  1507 + x: tmp.getAt(j).lng(),
  1508 + y: tmp.getAt(j).lat()
  1509 + });
  1510 +
  1511 + }
  1512 +
  1513 + if (!tmp.getAt(tmp.length - 1).equals(tmp.getAt(0))) {
  1514 + if (i % 2 !== 0) { // In inner rings, coordinates are reversed...
  1515 + verts.unshift({ // Add the first coordinate again for closure
  1516 + x: tmp.getAt(tmp.length - 1).lng(),
  1517 + y: tmp.getAt(tmp.length - 1).lat()
  1518 + });
  1519 +
  1520 + } else {
  1521 + verts.push({ // Add the first coordinate again for closure
  1522 + x: tmp.getAt(0).lng(),
  1523 + y: tmp.getAt(0).lat()
  1524 + });
  1525 +
  1526 + }
  1527 +
  1528 + }
  1529 +
  1530 + if (obj.getPaths().length > 1 && i > 0) {
  1531 + // If this and the last ring have the same signs...
  1532 + if (sign(obj.getPaths().getAt(i)) > 0 && sign(obj.getPaths().getAt(i - 1)) > 0 ||
  1533 + sign(obj.getPaths().getAt(i)) < 0 && sign(obj.getPaths().getAt(i - 1)) < 0 && !multiFlag) {
  1534 + // ...They must both be inner rings (or both be outer rings, in a multipolygon)
  1535 + verts = [verts]; // Wrap multipolygons once more (collection)
  1536 + }
  1537 +
  1538 + }
  1539 +
  1540 + if (i % 2 !== 0) { // In inner rings, coordinates are reversed...
  1541 + verts.reverse();
  1542 + }
  1543 + rings.push(verts);
  1544 + }
  1545 +
  1546 + response = {
  1547 + type: (multiFlag) ? 'multipolygon' : 'polygon',
  1548 + components: rings
  1549 + };
  1550 + return response;
  1551 +
  1552 + }
  1553 +
  1554 + // google.maps.Circle //////////////////////////////////////////////////////
  1555 + if (obj.constructor === google.maps.Circle) {
  1556 + var point = obj.getCenter();
  1557 + var radius = obj.getRadius();
  1558 + verts = [];
  1559 + var d2r = Math.PI / 180; // degrees to radians
  1560 + var r2d = 180 / Math.PI; // radians to degrees
  1561 + radius = radius / 1609; // meters to miles
  1562 + var earthsradius = 3963; // 3963 is the radius of the earth in miles
  1563 + var num_seg = 32; // number of segments used to approximate a circle
  1564 + var rlat = (radius / earthsradius) * r2d;
  1565 + var rlng = rlat / Math.cos(point.lat() * d2r);
  1566 +
  1567 + for (var n = 0; n <= num_seg; n++) {
  1568 + var theta = Math.PI * (n / (num_seg / 2));
  1569 + lng = point.lng() + (rlng * Math.cos(theta)); // center a + radius x * cos(theta)
  1570 + lat = point.lat() + (rlat * Math.sin(theta)); // center b + radius y * sin(theta)
  1571 + verts.push({
  1572 + x: lng,
  1573 + y: lat
  1574 + });
  1575 + }
  1576 +
  1577 + response = {
  1578 + type: 'polygon',
  1579 + components: [verts]
  1580 + };
  1581 +
  1582 + return response;
  1583 +
  1584 + }
  1585 +
  1586 + // google.maps.LatLngBounds ///////////////////////////////////////////////////
  1587 + if (obj.constructor === google.maps.LatLngBounds) {
  1588 +
  1589 + tmp = obj;
  1590 + verts = [];
  1591 + verts.push({ // NW corner
  1592 + x: tmp.getSouthWest().lng(),
  1593 + y: tmp.getNorthEast().lat()
  1594 + });
  1595 +
  1596 + verts.push({ // NE corner
  1597 + x: tmp.getNorthEast().lng(),
  1598 + y: tmp.getNorthEast().lat()
  1599 + });
  1600 +
  1601 + verts.push({ // SE corner
  1602 + x: tmp.getNorthEast().lng(),
  1603 + y: tmp.getSouthWest().lat()
  1604 + });
  1605 +
  1606 + verts.push({ // SW corner
  1607 + x: tmp.getSouthWest().lng(),
  1608 + y: tmp.getSouthWest().lat()
  1609 + });
  1610 +
  1611 + verts.push({ // NW corner (again, for closure)
  1612 + x: tmp.getSouthWest().lng(),
  1613 + y: tmp.getNorthEast().lat()
  1614 + });
  1615 +
  1616 +
  1617 + response = {
  1618 + type: 'polygon',
  1619 + isRectangle: true,
  1620 + components: [verts]
  1621 + };
  1622 +
  1623 + return response;
  1624 +
  1625 + }
  1626 +
  1627 + // google.maps.Rectangle ///////////////////////////////////////////////////
  1628 + if (obj.constructor === google.maps.Rectangle) {
  1629 +
  1630 + tmp = obj.getBounds();
  1631 + verts = [];
  1632 + verts.push({ // NW corner
  1633 + x: tmp.getSouthWest().lng(),
  1634 + y: tmp.getNorthEast().lat()
  1635 + });
  1636 +
  1637 + verts.push({ // NE corner
  1638 + x: tmp.getNorthEast().lng(),
  1639 + y: tmp.getNorthEast().lat()
  1640 + });
  1641 +
  1642 + verts.push({ // SE corner
  1643 + x: tmp.getNorthEast().lng(),
  1644 + y: tmp.getSouthWest().lat()
  1645 + });
  1646 +
  1647 + verts.push({ // SW corner
  1648 + x: tmp.getSouthWest().lng(),
  1649 + y: tmp.getSouthWest().lat()
  1650 + });
  1651 +
  1652 + verts.push({ // NW corner (again, for closure)
  1653 + x: tmp.getSouthWest().lng(),
  1654 + y: tmp.getNorthEast().lat()
  1655 + });
  1656 +
  1657 +
  1658 + response = {
  1659 + type: 'polygon',
  1660 + isRectangle: true,
  1661 + components: [verts]
  1662 + };
  1663 +
  1664 + return response;
  1665 +
  1666 + }
  1667 +
  1668 + // google.maps.Data Geometry Types /////////////////////////////////////////////////////
  1669 +
  1670 + // google.maps.Data.Feature /////////////////////////////////////////////////////
  1671 + if (obj.constructor === google.maps.Data.Feature) {
  1672 + return this.deconstruct.call(this, obj.getGeometry());
  1673 + }
  1674 +
  1675 + // google.maps.Data.Point /////////////////////////////////////////////////////
  1676 + if (obj.constructor === google.maps.Data.Point) {
  1677 + //console.log('It is a google.maps.Data.Point');
  1678 + response = {
  1679 + type: 'point',
  1680 + components: [{
  1681 + x: obj.get().lng(),
  1682 + y: obj.get().lat()
  1683 + }]
  1684 + };
  1685 + return response;
  1686 + }
  1687 +
  1688 + // google.maps.Data.LineString /////////////////////////////////////////////////////
  1689 + if (obj.constructor === google.maps.Data.LineString) {
  1690 + verts = [];
  1691 + //console.log('It is a google.maps.Data.LineString');
  1692 + for (i = 0; i < obj.getLength(); i += 1) {
  1693 + vertex = obj.getAt(i);
  1694 + verts.push({
  1695 + x: vertex.lng(),
  1696 + y: vertex.lat()
  1697 + });
  1698 + }
  1699 + response = {
  1700 + type: 'linestring',
  1701 + components: verts
  1702 + };
  1703 + return response;
  1704 + }
  1705 +
  1706 +
  1707 +
  1708 +
  1709 + // google.maps.Data.Polygon /////////////////////////////////////////////////////
  1710 + if (obj.constructor === google.maps.Data.Polygon) {
  1711 + var rings = [];
  1712 + //console.log('It is a google.maps.Data.Polygon');
  1713 + for (i = 0; i < obj.getLength(); i += 1) { // For each ring...
  1714 + ring = obj.getAt(i);
  1715 + var verts = [];
  1716 + for (j = 0; j < ring.getLength(); j += 1) { // For each vertex...
  1717 + vertex = ring.getAt(j);
  1718 + verts.push({
  1719 + x: vertex.lng(),
  1720 + y: vertex.lat()
  1721 + });
  1722 + }
  1723 + verts.push({
  1724 + x: ring.getAt(0).lng(),
  1725 + y: ring.getAt(0).lat()
  1726 + });
  1727 +
  1728 + rings.push(verts);
  1729 + }
  1730 + response = {
  1731 + type: 'polygon',
  1732 + components: rings
  1733 + };
  1734 +
  1735 + return response;
  1736 + }
  1737 +
  1738 +
  1739 + // google.maps.Data.MultiPoint /////////////////////////////////////////////////////
  1740 + if (obj.constructor === google.maps.Data.MultiPoint) {
  1741 + verts = [];
  1742 + for (i = 0; i < obj.getLength(); i += 1) {
  1743 + vertex = obj.getAt(i);
  1744 + verts.push([{
  1745 + x: vertex.lng(),
  1746 + y: vertex.lat()
  1747 + }]);
  1748 + }
  1749 + response = {
  1750 + type: 'multipoint',
  1751 + components: verts
  1752 + };
  1753 + return response;
  1754 + }
  1755 +
  1756 + // google.maps.Data.MultiLineString /////////////////////////////////////////////////////
  1757 + if (obj.constructor === google.maps.Data.MultiLineString) {
  1758 + linestrings = [];
  1759 + for (i = 0; i < obj.getLength(); i += 1) {
  1760 + verts = [];
  1761 + var linestring = obj.getAt(i);
  1762 + for (j = 0; j < linestring.getLength(); j += 1) {
  1763 + vertex = linestring.getAt(j);
  1764 + verts.push({
  1765 + x: vertex.lng(),
  1766 + y: vertex.lat()
  1767 + });
  1768 + }
  1769 + linestrings.push(verts);
  1770 + }
  1771 + response = {
  1772 + type: 'multilinestring',
  1773 + components: linestrings
  1774 + };
  1775 + return response;
  1776 + }
  1777 +
  1778 + // google.maps.Data.MultiPolygon /////////////////////////////////////////////////////
  1779 + if (obj.constructor === google.maps.Data.MultiPolygon) {
  1780 +
  1781 + var polygons = [];
  1782 +
  1783 + //console.log('It is a google.maps.Data.MultiPolygon');
  1784 + for (k = 0; k < obj.getLength(); k += 1) { // For each multipolygon
  1785 + var polygon = obj.getAt(k);
  1786 + var rings = [];
  1787 + for (i = 0; i < polygon.getLength(); i += 1) { // For each ring...
  1788 + ring = polygon.getAt(i);
  1789 + var verts = [];
  1790 + for (j = 0; j < ring.getLength(); j += 1) { // For each vertex...
  1791 + vertex = ring.getAt(j);
  1792 + verts.push({
  1793 + x: vertex.lng(),
  1794 + y: vertex.lat()
  1795 + });
  1796 + }
  1797 + verts.push({
  1798 + x: ring.getAt(0).lng(),
  1799 + y: ring.getAt(0).lat()
  1800 + });
  1801 +
  1802 + rings.push(verts);
  1803 + }
  1804 + polygons.push(rings);
  1805 + }
  1806 +
  1807 + response = {
  1808 + type: 'multipolygon',
  1809 + components: polygons
  1810 + };
  1811 + return response;
  1812 + }
  1813 +
  1814 + // google.maps.Data.GeometryCollection /////////////////////////////////////////////////////
  1815 + if (obj.constructor === google.maps.Data.GeometryCollection) {
  1816 +
  1817 + var objects = [];
  1818 + for (k = 0; k < obj.getLength(); k += 1) { // For each multipolygon
  1819 + var object = obj.getAt(k);
  1820 + objects.push(this.deconstruct.call(this, object));
  1821 + }
  1822 + //console.log('It is a google.maps.Data.GeometryCollection', objects);
  1823 + response = {
  1824 + type: 'geometrycollection',
  1825 + components: objects
  1826 + };
  1827 + return response;
  1828 + }
  1829 +
  1830 +
  1831 + // Array ///////////////////////////////////////////////////////////////////
  1832 + if (Wkt.isArray(obj)) {
  1833 + features = [];
  1834 +
  1835 + for (i = 0; i < obj.length; i += 1) {
  1836 + features.push(this.deconstruct.call(this, obj[i], true));
  1837 + }
  1838 +
  1839 + response = {
  1840 +
  1841 + type: (function () {
  1842 + var k, type = obj[0].constructor;
  1843 +
  1844 + for (k = 0; k < obj.length; k += 1) {
  1845 + // Check that all items have the same constructor as the first item
  1846 + if (obj[k].constructor !== type) {
  1847 + // If they don't, type is heterogeneous geometry collection
  1848 + return 'geometrycollection';
  1849 + }
  1850 + }
  1851 +
  1852 + switch (type) {
  1853 + case google.maps.Marker:
  1854 + return 'multipoint';
  1855 + case google.maps.Polyline:
  1856 + return 'multilinestring';
  1857 + case google.maps.Polygon:
  1858 + return 'multipolygon';
  1859 + default:
  1860 + return 'geometrycollection';
  1861 + }
  1862 +
  1863 + }()),
  1864 + components: (function () {
  1865 + // Pluck the components from each Wkt
  1866 + var i, comps;
  1867 +
  1868 + comps = [];
  1869 + for (i = 0; i < features.length; i += 1) {
  1870 + if (features[i].components) {
  1871 + comps.push(features[i].components);
  1872 + }
  1873 + }
  1874 +
  1875 + return {
  1876 + comps: comps
  1877 + };
  1878 + }())
  1879 +
  1880 + };
  1881 + response.components = response.components.comps;
  1882 + return response;
  1883 +
  1884 + }
  1885 + };
  1886 +}(Wkt || require('./wicket')));
... ...
classesjs/compactados/classe_editorgm_compacto.js
1   -if(typeof(i3GEO)==='undefined'){var i3GEO={}}i3GEO.editorGM={iconePonto:function(sel){if(sel){return i3GEO.configura.locaplic+"/imagens/google/symbol_middot_y.png"}else{return i3GEO.configura.locaplic+"/imagens/google/symbol_middot.png"}},aguarde:"",iddiv:"",drawingManager:"",selectedShape:null,regioestemas:{},temasregioes:{},descregioes:[],inicia:function(iddiv){var i,n,ics;i3GEO.janela.tempoMsg("Aten&ccedil;&atilde;o: apenas tabelas no esquema i3geo_metaestat podem ser editadas.");i3GEO.editorGM.iddiv=iddiv;$i(iddiv).innerHTML=i3GEO.editorGM.html();ics=$i(iddiv).getElementsByTagName("button");n=ics.length;i3GEO.barraDeBotoes.ativaBotoes();i3GEO.editorGM.comboRegiaoEditavel();for(i=0;i<n;i++){ics[i].style.backgroundColor="white";ics[i].className="iconeGuiaMovel";ics[i].onmouseout=function(){this.className="iconeGuiaMovel iconeGuiaMovelMouseOut"};ics[i].onmouseover=function(){this.className="iconeGuiaMovel iconeGuiaMovelMouseOver"};ics[i].style.backgroundImage="none";ics[i].style.height="32px";ics[i].style.width="32px";ics[i].style.border="1px solid gray";ics[i].style.margin="0px"}i3GEO.editorGM.drawingManager=new google.maps.drawing.DrawingManager({drawingMode:google.maps.drawing.OverlayType.POLYGON,drawingControl:false,drawingControlOptions:{position:google.maps.ControlPosition.TOP_CENTER,drawingModes:[google.maps.drawing.OverlayType.POLYGON,google.maps.drawing.OverlayType.MARKER,google.maps.drawing.OverlayType.POLYLINE]},markerOptions:{icon:i3GEO.editorGM.iconePonto(),clickable:true,zIndex:1,draggable:true,tema:"",colunaid:"",valorid:"",colunanome:"",valornome:"",editable:false},polygonOptions:{fillColor:'#ffff00',fillOpacity:.5,strokeWeight:2,clickable:true,zIndex:1,editable:true,tema:"",colunaid:"",valorid:"",colunanome:"",valornome:""}});i3GEO.editorGM.drawingManager.setMap(i3GeoMap);i3GEO.editorGM.drawingManager.setDrawingMode(null);google.maps.event.addListener(i3GEO.editorGM.drawingManager,'overlaycomplete',function(e){i3GEO.editorGM.drawingManager.setDrawingMode(null);i3GEO.editorGM.mudaicone();var newShape=e.overlay;newShape.type=e.type;newShape.tema=$i("i3geoCartoRegioesEditaveis").value;newShape.colunaid="";newShape.valorid="";newShape.colunanome="";newShape.valornome="";google.maps.event.addListener(newShape,'click',function(){i3GEO.editorGM.setSelection(newShape)});i3GEO.editorGM.setSelection(newShape);i3GEO.desenho.googlemaps.shapes.push(newShape)});google.maps.event.addListener(i3GEO.editorGM.drawingManager,'drawingmode_changed',i3GEO.editorGM.clearSelection);google.maps.event.addListener(i3GeoMap,'click',i3GEO.editorGM.clearSelection)},atualizaCamadasMetaestat:function(){var p=i3GEO.configura.locaplic+"/ferramentas/metaestat/analise.php?funcao=LISTACAMADASMETAESTAT&g_sid="+i3GEO.configura.sid,temp=function(retorno){var n=retorno.data.length,i;for(i=0;i<n;i++){i3GEO.Interface.atualizaTema("",retorno.data[i])}};cpJSON.call(p,"foo",temp)},html:function(){var ins='<div style=margin-left:5px >'+' <button title="Desenhar um poligono" onclick="i3GEO.editorGM.digitalizaPol(this)"><img src="'+i3GEO.configura.locaplic+'/imagens/gisicons/polygon-create.png" /></button>'+' <button title="Adicionar ponto" onclick="i3GEO.editorGM.digitalizaPt(this)"><img src="'+i3GEO.configura.locaplic+'/imagens/gisicons/point-create.png" /></button>'+' <button title="Capturar elemento de um tema" onclick="i3GEO.editorGM.capturaPoligonoTema.ativa(this)"><img src="'+i3GEO.configura.locaplic+'/imagens/gisicons/layer-import.png" /></button>'+' <button title="Selecionar" onclick="i3GEO.editorGM.seleciona(this)"><img src="'+i3GEO.configura.locaplic+'/imagens/gisicons/select.png" /></button>'+' <button title="Remove selecionado (n&atilde;o apaga)" onclick="i3GEO.editorGM.deleteSelectedShape()"><img src="'+i3GEO.configura.locaplic+'/imagens/gisicons/selected-delete.png" /></button>'+' <button title="Salvar/excluir dados" onclick="i3GEO.editorGM.salvaLimite.inicia()"><img src="'+i3GEO.configura.locaplic+'/imagens/gisicons/vector-save.png" /></button>'+' <button title="Editar atributos" onclick="i3GEO.editorGM.editarAtributos.ativa(this)"><img src="'+i3GEO.configura.locaplic+'/imagens/gisicons/annotation-form.png" /></button>'+' <button title="Ajuda" onmousedown="i3GEO.editorGM.mudaicone()" onclick="i3GEO.editorGM.ajuda()" ><img src="'+i3GEO.configura.locaplic+'/imagens/gisicons/help-contents.png" /></button>'+' <br><div id="i3geoCartoRegioesEditaveisDiv" ><img style="display:block;z-index:2" src="'+i3GEO.configura.locaplic+'/imagens/aguarde.gif" /></div></div>';return ins},ativaFoco:function(){i3GEO.util.mudaCursor(i3GEO.configura.cursores,"crosshair",i3GEO.Interface.IDMAPA,i3GEO.configura.locaplic);i3GEO.barraDeBotoes.ativaIcone("pan");i3GEO.editorGM.mudaicone();i3GEO.Interface.googlemaps.recalcPar()},setSelection:function(shape){if(shape.setEditable){shape.setEditable(!shape.editable)}else{shape.editable=true;shape.setIcon({url:i3GEO.editorGM.iconePonto(true)})}},clearSelection:function(){var i,n=i3GEO.desenho.googlemaps.shapes.length;for(i=0;i<n;i++){if(i3GEO.desenho.googlemaps.shapes[i]!=""&&i3GEO.desenho.googlemaps.shapes[i].setEditable){i3GEO.desenho.googlemaps.shapes[i].setEditable(false)}else if(i3GEO.desenho.googlemaps.shapes[i]!=""){i3GEO.desenho.googlemaps.shapes[i].editable=false;if(i3GEO.desenho.googlemaps.shapes[i].setIcon){i3GEO.desenho.googlemaps.shapes[i].setIcon({url:i3GEO.editorGM.iconePonto(false)})}}}},selectAll:function(){var i,n=i3GEO.desenho.googlemaps.shapes.length;for(i=0;i<n;i++){if(i3GEO.desenho.googlemaps.shapes[i]!=""&&i3GEO.desenho.googlemaps.shapes[i].setEditable){i3GEO.desenho.googlemaps.shapes[i].setEditable(true)}else if(i3GEO.desenho.googlemaps.shapes[i]!=""){i3GEO.desenho.googlemaps.shapes[i].editable=true;i3GEO.desenho.googlemaps.shapes[i].setIcon({url:i3GEO.editorGM.iconePonto(true)})}}},deleteSelectedShape:function(naoconfirma){if(!naoconfirma){naoconfirma=false}var i,n=i3GEO.desenho.googlemaps.shapes.length;if(n>0){if(naoconfirma===false){var x=window.confirm("Remove as figuras selecionadas?")}else{x=true}if(x){for(i=0;i<n;i++){if(i3GEO.desenho.googlemaps.shapes[i]!=""&&i3GEO.desenho.googlemaps.shapes[i].editable&&i3GEO.desenho.googlemaps.shapes[i].editable===true){i3GEO.desenho.googlemaps.shapes[i].setMap(null);i3GEO.desenho.googlemaps.shapes[i]=""}}}}else{i3GEO.janela.tempoMsg("Selecione pelo menos uma figura")}},selectedShapes:function(){var i,s=[],n=i3GEO.desenho.googlemaps.shapes.length;for(i=0;i<n;i++){if(i3GEO.desenho.googlemaps.shapes[i]!=""&&i3GEO.desenho.googlemaps.shapes[i].editable===true){s.push(i3GEO.desenho.googlemaps.shapes[i])}}return s},getCoordenadas:function(){var coordenadas=[],lista=[],n=i3GEO.desenho.googlemaps.shapes.length,tipo="",ps,nps,j,p,i,r={};for(i=0;i<n;i++){coordenadas=[];if(i3GEO.desenho.googlemaps.shapes[i]!=""&&i3GEO.desenho.googlemaps.shapes[i].editable===true){if(tipo==""){tipo=i3GEO.desenho.googlemaps.shapes[i].type}ps=i3GEO.desenho.googlemaps.shapes[i].getPath();nps=ps.getLength();for(j=0;j<nps;j++){p=ps.getAt(j);coordenadas.push([p.lng()+" "+p.lat()])}lista.push(coordenadas)}}r={"tipo":tipo,"coordenadas":lista};return r},toWKT:function(obj){var wkt=new Wkt.Wkt();wkt.fromObject(obj);return wkt.write()},merge:function(geoms){var n=geoms.length,w=new Wkt.Wkt(),g,m,i;w.read(geoms[0].toString());if(n>1){for(i=1;i<n;i++){g=geoms[i].toString();m=new Wkt.Wkt();m.read(g);w.merge(m)}}return w.write()},capturaPoligonoTema:{ativa:function(botao){i3GEO.editorGM.mudaicone(botao);i3GEO.eventos.cliquePerm.desativa();if(i3GEO.eventos.MOUSECLIQUE.toString().search("i3GEO.editorGM.capturaPoligonoTema.captura()")<0){i3GEO.eventos.MOUSECLIQUE.push("i3GEO.editorGM.capturaPoligonoTema.captura()")}i3GEO.util.mudaCursor(i3GEO.configura.cursores,"crosshair",i3GEO.Interface.IDMAPA,i3GEO.configura.locaplic)},desativa:function(){},captura:function(){var temp,tema="",regiao="",p,par,aguarde=$i("janelaEditorLimites_imagemCabecalho");if(!$i("i3geoCartoRegioesEditaveis")){i3GEO.eventos.MOUSECLIQUE.remove("i3GEO.editorGM.capturaPoligonoTema.captura()")}else{temp=function(retorno){var temp,n,i,WicketWkt,wkt="",colunaid=i3GEO.editorGM.descregioes["a_"+regiao]["identificador"],valorid="",colunanome=i3GEO.editorGM.descregioes["a_"+regiao]["colunanomeregiao"],valornome="",aguarde=$i("janelaEditorLimites_imagemCabecalho");if(aguarde){aguarde.style.visibility="hidden"}temp=retorno.data[0].resultado[0];if(temp===" "){i3GEO.janela.tempoMsg("Nada encontrado");return}i3GEO.editorGM.mudaicone();n=temp.length;for(i=0;i<n;i++){if(temp[i].alias=="wkt"){wkt=temp[i].valor}if(temp[i].alias==colunaid||temp[i].item==colunaid){valorid=temp[i].valor}if(temp[i].alias==colunanome||temp[i].item==colunanome){valornome=temp[i].valor}}WicketWkt=new Wkt.Wkt();try{WicketWkt.read(wkt)}catch(e1){try{wkt.read(wkt.replace('\n','').replace('\r','').replace('\t',''))}catch(e2){if(e2.name==='WKTError'){alert('Wicket could not understand the WKT string you entered. Check that you have parentheses balanced, and try removing tabs and newline characters.');return}}}obj=WicketWkt.toObject(i3GeoMap.defaults);i3GEO.editorGM.adicionaPoligonos(obj,tema,colunaid,valorid,colunanome,valornome);i3GEO.eventos.MOUSECLIQUE=[]};regiao=$i("i3geoCartoRegioesEditaveis").value;if(regiao!=""){tema=i3GEO.editorGM.regioestemas["a"+regiao];if(aguarde&&aguarde.style.visibility=="hidden"){aguarde.style.visibility="visible";p=i3GEO.configura.locaplic+"/classesphp/mapa_controle.php";par="funcao=identifica3&opcao=tema&xy="+objposicaocursor.ddx+","+objposicaocursor.ddy+"&resolucao=5&g_sid="+i3GEO.configura.sid+"&ext="+i3GEO.parametros.mapexten+"&listaDeTemas=&wkt=sim&tema="+tema;cpJSON.call(p,"identifica",temp,par)}}}}},comboRegiaoEditavel:function(codigo_tipo_regiao){if(!codigo_tipo_regiao){codigo_tipo_regiao=""}var onde=$i("i3geoCartoRegioesEditaveisDiv"),temp=function(dados){var n=dados.length,ins='<br><p class="paragrafo" >Camadas edit&aacute;veis:</p>',i;ins+="<select onchange='i3GEO.editorGM.comboRegiaoEditavelOnchange(this)' id='i3geoCartoRegioesEditaveis' style='width:175px' ><option value=''>---</option>";for(i=0;i<n;i++){if(dados[i].esquemadb=="i3geo_metaestat"){ins+="<option value='"+dados[i].codigo_tipo_regiao+"'>"+dados[i].nome_tipo_regiao+"</option>";i3GEO.editorGM.descregioes["a_"+dados[i].codigo_tipo_regiao]=dados[i]}}ins+="</select>";if(onde){onde.innerHTML=ins}return ins};i3GEO.php.listaTipoRegiao(temp,codigo_tipo_regiao)},comboRegiaoEditavelOnchange:function(combo){if(combo.value===""){return}i3GEO.editorGM.editarAtributos.desativa();var temp=function(retorno){if(i3GEO.arvoreDeCamadas.pegaTema(retorno.layer)==""){i3GEO.php.adtema(i3GEO.atualiza,retorno.mapfile);i3GEO.editorGM.regioestemas["a"+$i("i3geoCartoRegioesEditaveis").value]=retorno.layer;i3GEO.editorGM.temasregioes[retorno.layer]=$i("i3geoCartoRegioesEditaveis").value}};i3GEO.php.mapfileTipoRegiao(temp,combo.value)},mudaicone:function(botao){var c=$i(i3GEO.editorGM.iddiv),ci=c.getElementsByTagName("img"),n=ci.length,i;for(i=0;i<n;i++){ci[i].parentNode.style.backgroundColor="#F5F5F5"}i3GEO.eventos.MOUSECLIQUE=[];i3GEO.editorGM.capturaPoligonoTema.desativa();i3GEO.editorGM.editarAtributos.desativa();if(botao&&botao.style){botao.style.backgroundColor="#cedff2"}},digitalizaPol:function(botao){i3GEO.editorGM.mudaicone(botao);i3GEO.util.mudaCursor(i3GEO.configura.cursores,"pointer",i3GEO.Interface.IDMAPA,i3GEO.configura.locaplic);i3GEO.editorGM.drawingManager.setOptions({drawingMode:google.maps.drawing.OverlayType.POLYGON})},digitalizaPt:function(botao){i3GEO.editorGM.mudaicone(botao);i3GEO.util.mudaCursor(i3GEO.configura.cursores,"pointer",i3GEO.Interface.IDMAPA,i3GEO.configura.locaplic);i3GEO.editorGM.drawingManager.setOptions({drawingMode:google.maps.drawing.OverlayType.MARKER})},seleciona:function(botao){i3GEO.editorGM.mudaicone(botao);i3GEO.util.mudaCursor(i3GEO.configura.cursores,"pointer",i3GEO.Interface.IDMAPA,i3GEO.configura.locaplic);i3GEO.editorGM.drawingManager.setOptions({drawingMode:null})},adicionaPoligonos:function(obj,tema,colunaid,valorid,colunanome,valornome){if(!tema){tema=$i("i3geoCartoRegioesEditaveis").value}if(!colunaid){colunaid=""}if(!valorid){valorid=""}if(!colunanome){colunanome=""}if(!valornome){valornome=""}var pol;if(Wkt.isArray(obj)){for(i in obj){if(obj.hasOwnProperty(i)&&!Wkt.isArray(obj[i])){pol=new google.maps.Polygon({path:obj[i].getPath(),map:i3GeoMap,fillColor:'#ffff00',fillOpacity:.5,strokeWeight:2,clickable:true,zIndex:1,editable:true,tema:tema,colunaid:colunaid,valorid:valorid,colunanome:colunanome,valornome:valornome});google.maps.event.addListener(pol,'click',function(){i3GEO.editorGM.setSelection(pol)});i3GEO.desenho.googlemaps.shapes.push(pol)}}return}if(obj.type==='polygon'||obj.type==='linestring'){pol=new google.maps.Polygon({paths:obj.getPaths(),map:i3GeoMap,fillColor:'#ffff00',fillOpacity:.5,strokeWeight:2,clickable:true,zIndex:1,editable:true,tema:tema,colunaid:colunaid,valorid:valorid,colunanome:colunanome,valornome:valornome});google.maps.event.addListener(pol,'click',function(){i3GEO.editorGM.setSelection(pol)});i3GEO.desenho.googlemaps.shapes.push(pol);return}if(obj.type==='marker'){i3GEO.editorGM.selectAll();if(i3GEO.desenho.googlemaps.shapes.length>0){i3GEO.editorGM.deleteSelectedShape(true)}pol=new google.maps.Marker({position:new google.maps.LatLng(obj.getPosition().ob,obj.getPosition().pb),map:i3GeoMap,icon:{url:i3GEO.editorGM.iconePonto(false)},clickable:true,zIndex:1,draggable:true,tema:tema,colunaid:colunaid,valorid:valorid,colunanome:colunanome,valornome:valornome,editable:false});google.maps.event.addListener(pol,'click',function(){i3GEO.editorGM.setSelection(pol)});i3GEO.desenho.googlemaps.shapes.push(pol);return}},salvaLimite:{inicia:function(){if(i3GEO.login.verificaCookieLogin()===false){i3GEO.janela.tempoMsg("Voc&ecirc; precisa fazer login para usar essa op&ccedil;&atilde;o");return}var s=i3GEO.editorGM.selectedShapes(),n=s.length,janela=YAHOO.i3GEO.janela.manager.find("salvaLimite");if(janela){janela.destroy()}if(n==1){s=s[0];i3GEO.editorGM.salvaLimite.criaJanelaFlutuante(i3GEO.editorGM.salvaLimite.html(s.colunaid,s.valorid,s.colunanome,s.valornome));new YAHOO.widget.Button("i3GEOFmetaestati3GEO.editorGMBotao1",{onclick:{fn:function(){i3GEO.editorGM.salvaLimite.gravaDados(true)}}});new YAHOO.widget.Button("i3GEOFmetaestati3GEO.editorGMBotao2",{onclick:{fn:function(){i3GEO.editorGM.salvaLimite.gravaDados(false)}}});new YAHOO.widget.Button("i3GEOFmetaestati3GEO.editorGMBotao3",{onclick:{fn:function(){i3GEO.editorGM.salvaLimite.excluiPoligono()}}})}else{i3GEO.janela.tempoMsg("Selecione uma figura")}},html:function(colunaIdElemento,valorIdElemento,colunaNomeElemento,valorNomeElemento){var ins=''+'<p class=paragrafo >Se o valor do c&oacute;digo for vazio, ser&aacute; criado um novo elemento. Caso contr&aacute;rio, os valores atualmente registrados ser&atilde;o atualizados.</p>'+'<p class=paragrafo >Edite os atributos:</p>'+'<input type=hidden id="inputColunaIdElemento" value="'+colunaIdElemento+'" />'+'<input type=hidden id="inputColunaNomeElemento" value="'+colunaNomeElemento+'" />'+'<input type=hidden id="inputIdentificadorElemento" value="'+valorIdElemento+'" />'+'<input type=hidden id="inputNomeElemento" value="'+valorNomeElemento+'" />'+'<p class=paragrafo >C&oacute;digo:</p>'+'<p class=paragrafo ><input class=digitar type=text id="inputIdentificadorNovoElemento" value="'+valorIdElemento+'" style="width:180;cursor:text" /></p>'+'<p class=paragrafo >Nome:</p>'+'<p class=paragrafo ><input class=digitar type=text id="inputNomeNovoElemento" value="'+valorNomeElemento+'" style="width:180;cursor:text" /></p>'+'<p class=paragrafo >Escolha a opera&ccedil;&atilde;o desejada:</p>'+'<input id=i3GEOFmetaestati3GEO.editorGMBotao1 type="button" value="Salvar tudo" />'+'&nbsp;<input id=i3GEOFmetaestati3GEO.editorGMBotao2 type="button" value="Salvar apenas os atributos" />'+'<br><br><input id=i3GEOFmetaestati3GEO.editorGMBotao3 type="button" value="Excluir" />';return ins},criaJanelaFlutuante:function(html){var titulo,cabecalho,minimiza,janela;cabecalho=function(){};minimiza=function(){i3GEO.janela.minimiza("salvaLimite")};titulo="Salva limite&nbsp;&nbsp;&nbsp;</a>";janela=i3GEO.janela.cria("300px","265px","","","",titulo,"salvaLimite",true,"hd",cabecalho,minimiza);$i("salvaLimite_corpo").style.backgroundColor="white";$i("salvaLimite_corpo").innerHTML=html;YAHOO.util.Event.addListener(janela[0].close,"click",i3GEO.editorGM.mudaicone)},gravaDados:function(comwkt){if(i3GEO.login.verificaCookieLogin()===false){i3GEO.janela.tempoMsg("Voc&ecirc; precisa fazer login para usar essa op&ccedil;&atilde;o");return}if(!window.confirm("Grava mesmo os dados?")){return}var p,codigo_tipo_regiao=$i("i3geoCartoRegioesEditaveis").value,identificadornovo=$i("inputIdentificadorNovoElemento").value,identificador=$i("inputIdentificadorElemento").value,nome=$i("inputNomeNovoElemento").value,wkt="",temp=function(retorno){i3GEO.editorGM.deleteSelectedShape(true);var janela=YAHOO.i3GEO.janela.manager.find("salvaLimite");if(janela){janela.destroy()}i3GEO.Interface.redesenha()};if(comwkt===true){wkt=i3GEO.editorGM.toWKT(i3GEO.editorGM.selectedShapes()[0])}else{if(identificadornovo===identificador&&$i("inputNomeElemento").value===nome){i3GEO.janela.tempoMsg("Valores iguais ao original");return}}p=i3GEO.configura.locaplic+"/admin/php/metaestat.php?funcao=mantemDadosRegiao&tipo=";cpJSON.call(p,"foo",temp,"&codigo_tipo_regiao="+codigo_tipo_regiao+"&identificadornovo="+identificadornovo+"&identificador="+identificador+"&nome="+nome+"&wkt="+wkt)},excluiPoligono:function(){if(i3GEO.login.verificaCookieLogin()===false){i3GEO.janela.tempoMsg("Voc&ecirc; precisa fazer login para usar essa op&ccedil;&atilde;o");return}if(!window.confirm("Exclui mesmo o poligono?")){return}var codigo_tipo_regiao=$i("i3geoCartoRegioesEditaveis").value,identificador=$i("inputIdentificadorElemento").value,temp=function(retorno){i3GEO.editorGM.deleteSelectedShape(true);var janela=YAHOO.i3GEO.janela.manager.find("salvaLimite");if(janela){janela.destroy()}i3GEO.Interface.redesenha()},p=i3GEO.configura.locaplic+"/admin/php/metaestat.php?funcao=mantemDadosRegiao&tipo=excluir";cpJSON.call(p,"foo",temp,"&codigo_tipo_regiao="+codigo_tipo_regiao+"&identificador="+identificador)}},editarAtributos:{aliascolunas:"",x:"",y:"",ativa:function(botao){if($i("i3geoCartoRegioesEditaveis").value==""){i3GEO.janela.tempoMsg("Escolha uma regiao");return}i3GEO.editorGM.mudaicone(botao);if(i3GEO.eventos.MOUSECLIQUE.toString().search("i3GEO.editorGM.editarAtributos.captura()")<0){i3GEO.eventos.MOUSECLIQUE.push("i3GEO.editorGM.editarAtributos.captura()")}var janela=YAHOO.i3GEO.janela.manager.find("editaAtributos");if(janela){$i("editarAtributosForm").innerHTML=""}else{i3GEO.editorGM.editarAtributos.criaJanelaFlutuante(i3GEO.editorGM.editarAtributos.html());i3GEO.editorGM.editarAtributos.comboVariaveis()}},desativa:function(){var janela=YAHOO.i3GEO.janela.manager.find("editaAtributos");if(janela){janela.destroy()}},criaJanelaFlutuante:function(html){var janela,titulo,cabecalho,minimiza;cabecalho=function(){};minimiza=function(){i3GEO.janela.minimiza("editaAtributos")};titulo="Atributos&nbsp;&nbsp;&nbsp;</a>";janela=i3GEO.janela.cria("250px","265px","","","",titulo,"editaAtributos",false,"hd",cabecalho,minimiza);$i("editaAtributos_corpo").style.backgroundColor="white";$i("editaAtributos_corpo").innerHTML=html;i3GEO.janela.tempoMsg("Ap&oacute;s escolher a medida da vari&aacute;vel, clique no mapa para escolher o limite geogr&aacute;fico.");YAHOO.util.Event.addListener(janela[0].close,"click",i3GEO.editorGM.mudaicone)},html:function(){var ins=''+'<p class="paragrafo" ><div id="editarAtributosVariaveis" ></div></p>'+'<p class="paragrafo" ><div id="editarAtributosMedidasVariavel" ></div></p>'+'<p class="paragrafo" ><div id="editarAtributosRegiao" ></div></p>'+'<p class="paragrafo" ><div id="editarAtributosForm" ></div></p>'+'';return ins},comboVariaveis:function(){var temp=function(dados){var i,n=dados.length,ins='';ins+='<p class="paragrafo" >Escolha uma vari&aacute;vel para editar</p>';ins+="<select style='box-shadow:0 1px 5px gray;width:200px' onchange='i3GEO.editorGM.editarAtributos.comboMedidasVariavel(this)'><option value=''>---</option>";for(i=0;i<n;i++){ins+="<option title='"+dados[i].descricao+"' value='"+dados[i].codigo_variavel+"'>"+dados[i].nome+"</option>"}ins+="</select>";$i("editarAtributosVariaveis").innerHTML=ins};i3GEO.php.listaVariavel(temp,"i3geo_metaestat")},comboMedidasVariavel:function(comboMedidas){var temp=function(dados){var i,n=dados.length,ins='';ins+='<p class="paragrafo" >Escolha uma medida da vari&aacute;vel para editar</p>';ins+="<select id='editarAtributosComboMedidas' style='box-shadow:0 1px 5px gray;width:200px' onchange=''><option value=''>---</option>";for(i=0;i<n;i++){if(dados[i].esquemadb=="i3geo_metaestat"&&dados[i].codigo_tipo_regiao==$i("i3geoCartoRegioesEditaveis").value){ins+="<option value='"+dados[i].id_medida_variavel+"'>"+dados[i].nomemedida+"</option>"}}ins+="</select>";$i("editarAtributosMedidasVariavel").innerHTML=ins};if(comboMedidas.value!==""){i3GEO.php.listaMedidaVariavel(comboMedidas.value,temp)}},captura:function(){if(!YAHOO.i3GEO.janela.manager.find("editaAtributos")){i3GEO.editorGM.mudaicone(botao);return}i3GEO.editorGM.editarAtributos.x=objposicaocursor.ddx;i3GEO.editorGM.editarAtributos.y=objposicaocursor.ddy;i3GEO.editorGM.editarAtributos.pegaDados()},pegaDados:function(){var p=i3GEO.configura.locaplic+"/admin/php/metaestat.php?funcao=listaAtributosMedidaVariavelXY",codigo_tipo_regiao=$i("i3geoCartoRegioesEditaveis").value,id_medida_variavel=$i("editarAtributosComboMedidas").value,temp=function(retorno){var atr=retorno.atributos,i=0,n=atr.dados.length,j=0,idunico="",nj=atr.aliascolunas.length,ins=""+'<p class=paragrafo >Limite geogr&aacute;fico escolhido:</p>'+'<p class=paragrafo ><b>Nome: </b>'+retorno.regiao.nomeregiao+'</p>'+'<p class=paragrafo ><b>C&oacute;digo: </b>'+retorno.regiao.identificador_regiao+'</p>'+'<input type=hidden id="editarAtributosidentificador_regiao" value="'+retorno.regiao.identificador_regiao+'" />'+'<p class=paragrafo >Atributos:</p>'+'<input id=editarAtributosAdicionar value="Adicionar um novo" />'+'&nbsp;<input id=editarAtributosSalvar value="Salvar" />';$i("editarAtributosRegiao").innerHTML=ins;ins="";for(i=0;i<n;i++){for(j=0;j<nj;j++){if(atr.aliascolunas[j]=="idunico"){idunico=atr.dados[i][atr.colunas[j]]}}ins+="<hr><div><p class=paragrafo style='color:blue;cursor:pointer' onclick='i3GEO.editorGM.editarAtributos.excluir("+idunico+")' >excluir</p>";for(j=0;j<nj;j++){if(atr.aliascolunas[j]!=="idunico"){ins+='<p class=paragrafo >'+atr.aliascolunas[j]+':<br>'+'<input class=digitar id="idunico_'+idunico+'" value="'+atr.dados[i][atr.colunas[j]]+'" name="'+atr.colunas[j]+'" /></p>'}}}$i("editarAtributosForm").innerHTML=ins;new YAHOO.widget.Button("editarAtributosAdicionar",{onclick:{fn:function(){var novoel=document.createElement("div"),ins="<hr><br>";for(j=0;j<nj;j++){if(atr.aliascolunas[j]!=="idunico"){ins+='<p class=paragrafo >'+atr.aliascolunas[j]+' - '+atr.descricao[j]+':<br>'+'<input class=digitar id="" value="" name="'+atr.colunas[j]+'" /></p>'}}ins+"<br></div>";novoel.innerHTML=ins;$i("editarAtributosForm").appendChild(novoel)}}});new YAHOO.widget.Button("editarAtributosSalvar",{onclick:{fn:function(){i3GEO.editorGM.editarAtributos.salva()}}})};cpJSON.call(p,"foo",temp,"&codigo_tipo_regiao="+codigo_tipo_regiao+"&id_medida_variavel="+id_medida_variavel+"&x="+i3GEO.editorGM.editarAtributos.x+"&y="+i3GEO.editorGM.editarAtributos.y)},excluir:function(id){if(i3GEO.login.verificaCookieLogin()===false){i3GEO.janela.tempoMsg("Voc&ecirc; precisa fazer login para usar essa op&ccedil;&atilde;o");return}var p=i3GEO.configura.locaplic+"/admin/php/metaestat.php?funcao=excluiAtributosMedidaVariavel",codigo_tipo_regiao=$i("i3geoCartoRegioesEditaveis").value,id_medida_variavel=$i("editarAtributosComboMedidas").value,identificador_regiao=$i("editarAtributosidentificador_regiao").value,temp=function(retorno){i3GEO.editorGM.editarAtributos.pegaDados();i3GEO.janela.fechaAguarde("aguardeSalvaAtributos")};i3GEO.janela.AGUARDEMODAL=true;i3GEO.janela.abreAguarde("aguardeSalvaAtributos","Salvando...");i3GEO.janela.AGUARDEMODAL=false;cpJSON.call(p,"foo",temp,"&codigo_tipo_regiao="+codigo_tipo_regiao+"&identificador_regiao="+identificador_regiao+"&id_medida_variavel="+id_medida_variavel+"&id="+id)},salva:function(){if(i3GEO.login.verificaCookieLogin()===false){i3GEO.janela.tempoMsg("Voc&ecirc; precisa fazer login para usar essa op&ccedil;&atilde;o");return}var container=$i("editarAtributosForm"),divsT=container.getElementsByTagName("div"),n=divsT.length,i=0,dv="",inputs="",codigo_tipo_regiao=$i("i3geoCartoRegioesEditaveis").value,id_medida_variavel=$i("editarAtributosComboMedidas").value,identificador_regiao=$i("editarAtributosidentificador_regiao").value,nj,j,colunas=[],colunasT=[],valores=[],valoresT=[],idsunicosT=[],p=i3GEO.configura.locaplic+"/admin/php/metaestat.php?funcao=salvaAtributosMedidaVariavel",re=new RegExp("idunico_","g"),temp=function(retorno){i3GEO.editorGM.editarAtributos.pegaDados();i3GEO.editorGM.atualizaCamadasMetaestat();i3GEO.janela.fechaAguarde("aguardeSalvaAtributos")};if(codigo_tipo_regiao==""){i3GEO.janela.tempoMsg("Problemas com o codigo da regiao");return}if(id_medida_variavel==""){i3GEO.janela.tempoMsg("Escolha uma medida");return}if(identificador_regiao==""){i3GEO.janela.tempoMsg("Problemas com o identificador da regiao");return}for(i=0;i<n;i++){dv=divsT[i];inputs=dv.getElementsByTagName("input");nj=inputs.length;colunas=[];valores=[];for(j=0;j<nj;j++){colunas.push(inputs[j].name);valores.push(inputs[j].value)}idsunicosT.push(inputs[0].id.replace(re,''));colunasT.push(colunas.join(";"));valoresT.push(valores.join(";"))}i3GEO.janela.AGUARDEMODAL=true;i3GEO.janela.abreAguarde("aguardeSalvaAtributos","Salvando...");i3GEO.janela.AGUARDEMODAL=false;cpJSON.call(p,"foo",temp,"&codigo_tipo_regiao="+codigo_tipo_regiao+"&identificador_regiao="+identificador_regiao+"&id_medida_variavel="+id_medida_variavel+"&colunas="+colunasT[0]+"&valores="+valoresT.join("|")+"&idsunicos="+idsunicosT.join(";"))}},ajuda:function(){var titulo,cabecalho,minimiza,html="";cabecalho=function(){};minimiza=function(){i3GEO.janela.minimiza("editaAtributosAjuda")};titulo="Ajuda&nbsp;</a>";i3GEO.janela.cria("400px","350px","","","",titulo,"editaAtributosAjuda",false,"hd",cabecalho,minimiza);$i("editaAtributosAjuda_corpo").style.backgroundColor="white";html+="<table class=lista8 >"+"<tr><td><img src='"+i3GEO.configura.locaplic+"/imagens/gisicons/polygon-create.png' /></td>"+"<td>Clique no mapa para tra&ccedil;ar um pol&iacute;gono novo. Cada clique corresponde a um v&eacute;rtice do pol&iacute;gono. Para encerrar o tra&ccedil;ado utilize um duplo clique. Ap&oacute;s tra&ccedil;ar um novo pol&iacute;gono pode-se selecion&aacute;-lo novamente e editar os v&eacute;rtices, se for necess&aacute;rio, ou mesmo apagar o pol&iacute;gono por completo. O novo pol&iacute;gono s&oacute; ser&aacute; salvo por meio da op&ccedil;&atilde;o espec&iacute;fica para isso.</td></tr>"+"<tr><td><img src='"+i3GEO.configura.locaplic+"/imagens/gisicons/layer-import.png' /></td>"+"<td>Utilize essa op&ccedil;&atilde;o para capturar os v&eacute;rtices de um pol&iacute;gono existente. O resultado da captura &eacute; uma figura que pode ser editada, ou seja, os v&eacute;rtices podem ser modificados de posi&ccedil;&atilde;o ou mesmo removidos. Ap&oacute;s editar, salve o novo pol&iacute;gono.</td></tr>"+"<tr><td><img src='"+i3GEO.configura.locaplic+"/imagens/gisicons/select.png' /></td>"+"<td>Ap&oacute;s ativar essa op&ccedil;&atilde;o clique no mapa sobre uma figura existente (que tenha sido capturada ou digtalizada). A figura passar&aacute; ent&atilde;o para o estado de 'selecionada' podendo ser utilizada por outras ferramentas de edi&ccedil;&atilde;o.</td></tr>"+"<tr><td><img src='"+i3GEO.configura.locaplic+"/imagens/gisicons/selected-delete.png' /></td>"+"<td>Remove da tela a figura que estiver selecionada. Essa opera&ccedil;&atilde;o n&atilde;o apaga o pol&iacute;gono do banco de dados, apenas remove do modo de edi&ccedil;&atilde;o.</td></tr>"+"<tr><td><img src='"+i3GEO.configura.locaplic+"/imagens/gisicons/vector-save.png' /></td>"+"<td>Salva no banco de dados a figura que estiver selecionada. Essa op&ccedil;&atilde;o altera apenas os atributos do limite geogr&aacute;fico, n&atilde;o afetando os valores armazenados em cada medida de vari&aacute;vel.</td></tr>"+"<tr><td><img src='"+i3GEO.configura.locaplic+"/imagens/gisicons/annotation-form.png' /></td>"+"<td>Abre um formul&aacute;rio que permite alterar os valores de uma medida de vari&aacute;vel relacionada a uma determinada regi&atilde;o. Ap&oacute;s abrir o formul&aacute;rio, clique no mapa sobre a regi&atilde;o desejada, mas escolha a medida da vari&aacute;vel primeiro. Os valores j&aacute; existentes poder&atilde;o ent&atilde;o ser alterados ou podem ser adicionados novos.</td></tr>"+"</table>";$i("editaAtributosAjuda_corpo").innerHTML=html}};google.maps.Marker.prototype.type='marker';google.maps.Polyline.prototype.type='polyline';google.maps.Polygon.prototype.type='polygon';google.maps.Rectangle.prototype.type='rectangle';google.maps.Circle.prototype.type='circle';Wkt.Wkt.prototype.construct={'point':function(config,component){var c=component||this.components;config=config||{};config.position=new google.maps.LatLng(c[0].y,c[0].x);return new google.maps.Marker(config)},'multipoint':function(config){var i,c,arr;c=this.components;config=config||{};arr=[];for(i=0;i<c.length;i+=1){arr.push(this.construct.point(config,c[i]))}return arr},'linestring':function(config,component){var i,c;c=component||this.components;config=config||{editable:false};config.path=[];for(i=0;i<c.length;i+=1){config.path.push(new google.maps.LatLng(c[i].y,c[i].x))}return new google.maps.Polyline(config)},'multilinestring':function(config){var i,c,arr;c=this.components;config=config||{editable:false};config.path=[];arr=[];for(i=0;i<c.length;i+=1){arr.push(this.construct.linestring(config,c[i]))}return arr},'polygon':function(config){var j,k,c,rings,verts;c=this.components;config=config||{editable:false};config.paths=[];rings=[];for(j=0;j<c.length;j+=1){verts=[];for(k=0;k<c[j].length;k+=1){verts.push(new google.maps.LatLng(c[j][k].y,c[j][k].x))}if(j!==0){if(config.reverseInnerPolygons==null||config.reverseInnerPolygons){verts.reverse()}}rings.push(verts)}config.paths=config.paths.concat(rings);if(this.isRectangle){console.log('Rectangles are not yet supported; set the isRectangle property to false (default).')}else{return new google.maps.Polygon(config)}},'multipolygon':function(config){var i,j,k,c,rings,verts;c=this.components;config=config||{editable:false};config.paths=[];for(i=0;i<c.length;i+=1){rings=[];for(j=0;j<c[i].length;j+=1){verts=[];for(k=0;k<c[i][j].length;k+=1){verts.push(new google.maps.LatLng(c[i][j][k].y,c[i][j][k].x))}rings.push(verts)}config.paths=config.paths.concat(rings)}return new google.maps.Polygon(config)}};Wkt.Wkt.prototype.deconstruct=function(obj){var i,j,verts,rings,tmp;if(obj.getPosition&&typeof obj.getPosition==='function'){return{type:'point',components:[{x:obj.getPosition().lng(),y:obj.getPosition().lat()}]}}else if(obj.getPath&&!obj.getPaths){verts=[];for(i=0;i<obj.getPath().length;i+=1){tmp=obj.getPath().getAt(i);verts.push({x:tmp.lng(),y:tmp.lat()})}return{type:'linestring',components:verts}}else if(obj.getPaths){rings=[];for(i=0;i<obj.getPaths().length;i+=1){tmp=obj.getPaths().getAt(i);verts=[];for(j=0;j<obj.getPaths().getAt(i).length;j+=1){verts.push({x:tmp.getAt(j).lng(),y:tmp.getAt(j).lat()})}verts.push({x:tmp.getAt(0).lng(),y:tmp.getAt(0).lat()});if(obj.getPaths().length>1){verts=[verts]}rings.push(verts)}return{type:'polygon',components:rings}}else if(obj.getBounds&&!obj.getRadius){tmp=obj.getBounds();return{type:'polygon',isRectangle:true,components:[[{x:tmp.getSouthWest().lng(),y:tmp.getNorthEast().lat()},{x:tmp.getNorthEast().lng(),y:tmp.getNorthEast().lat()},{x:tmp.getNorthEast().lng(),y:tmp.getSouthWest().lat()},{x:tmp.getSouthWest().lng(),y:tmp.getSouthWest().lat()},{x:tmp.getSouthWest().lng(),y:tmp.getNorthEast().lat()}]]}}else if(obj.getBounds&&obj.getRadius){console.log('Deconstruction of google.maps.Circle objects is not yet supported')}else{console.log('The passed object does not have any recognizable properties.')}};Wkt.Wkt.prototype.isRectangle=false;
2 1 \ No newline at end of file
  2 +if(typeof(i3GEO)==='undefined'){var i3GEO={}}i3GEO.editorGM={iconePonto:function(sel){if(sel){return i3GEO.configura.locaplic+"/imagens/google/symbol_middot_y.png"}else{return i3GEO.configura.locaplic+"/imagens/google/symbol_middot.png"}},aguarde:"",iddiv:"",drawingManager:"",selectedShape:null,regioestemas:{},temasregioes:{},descregioes:[],inicia:function(iddiv){var i,n,ics;i3GEO.janela.tempoMsg("Aten&ccedil;&atilde;o: apenas tabelas no esquema i3geo_metaestat podem ser editadas.");i3GEO.editorGM.iddiv=iddiv;$i(iddiv).innerHTML=i3GEO.editorGM.html();ics=$i(iddiv).getElementsByTagName("button");n=ics.length;i3GEO.barraDeBotoes.ativaBotoes();i3GEO.editorGM.comboRegiaoEditavel();for(i=0;i<n;i++){ics[i].style.backgroundColor="white";ics[i].className="iconeGuiaMovel";ics[i].onmouseout=function(){this.className="iconeGuiaMovel iconeGuiaMovelMouseOut"};ics[i].onmouseover=function(){this.className="iconeGuiaMovel iconeGuiaMovelMouseOver"};ics[i].style.backgroundImage="none";ics[i].style.height="32px";ics[i].style.width="32px";ics[i].style.border="1px solid gray";ics[i].style.margin="0px"}i3GEO.editorGM.drawingManager=new google.maps.drawing.DrawingManager({drawingMode:google.maps.drawing.OverlayType.POLYGON,drawingControl:false,drawingControlOptions:{position:google.maps.ControlPosition.TOP_CENTER,drawingModes:[google.maps.drawing.OverlayType.POLYGON,google.maps.drawing.OverlayType.MARKER,google.maps.drawing.OverlayType.POLYLINE]},markerOptions:{icon:i3GEO.editorGM.iconePonto(),clickable:true,zIndex:1,draggable:true,tema:"",colunaid:"",valorid:"",colunanome:"",valornome:"",editable:false},polygonOptions:{fillColor:'#ffff00',fillOpacity:.5,strokeWeight:2,clickable:true,zIndex:1,editable:true,tema:"",colunaid:"",valorid:"",colunanome:"",valornome:""}});i3GEO.editorGM.drawingManager.setMap(i3GeoMap);i3GEO.editorGM.drawingManager.setDrawingMode(null);google.maps.event.addListener(i3GEO.editorGM.drawingManager,'overlaycomplete',function(e){i3GEO.editorGM.drawingManager.setDrawingMode(null);i3GEO.editorGM.mudaicone();var newShape=e.overlay;newShape.type=e.type;newShape.tema=$i("i3geoCartoRegioesEditaveis").value;newShape.colunaid="";newShape.valorid="";newShape.colunanome="";newShape.valornome="";google.maps.event.addListener(newShape,'click',function(){i3GEO.editorGM.setSelection(newShape)});i3GEO.editorGM.setSelection(newShape);i3GEO.desenho.googlemaps.shapes.push(newShape)});google.maps.event.addListener(i3GEO.editorGM.drawingManager,'drawingmode_changed',i3GEO.editorGM.clearSelection);google.maps.event.addListener(i3GeoMap,'click',i3GEO.editorGM.clearSelection)},atualizaCamadasMetaestat:function(){var p=i3GEO.configura.locaplic+"/ferramentas/metaestat/analise.php?funcao=LISTACAMADASMETAESTAT&g_sid="+i3GEO.configura.sid,temp=function(retorno){var n=retorno.data.length,i;for(i=0;i<n;i++){i3GEO.Interface.atualizaTema("",retorno.data[i])}};cpJSON.call(p,"foo",temp)},html:function(){var ins='<div style=margin-left:5px >'+' <button title="Desenhar um poligono" onclick="i3GEO.editorGM.digitalizaPol(this)"><img src="'+i3GEO.configura.locaplic+'/imagens/gisicons/polygon-create.png" /></button>'+' <button title="Adicionar ponto" onclick="i3GEO.editorGM.digitalizaPt(this)"><img src="'+i3GEO.configura.locaplic+'/imagens/gisicons/point-create.png" /></button>'+' <button title="Capturar elemento de um tema" onclick="i3GEO.editorGM.capturaPoligonoTema.ativa(this)"><img src="'+i3GEO.configura.locaplic+'/imagens/gisicons/layer-import.png" /></button>'+' <button title="Selecionar" onclick="i3GEO.editorGM.seleciona(this)"><img src="'+i3GEO.configura.locaplic+'/imagens/gisicons/select.png" /></button>'+' <button title="Remove selecionado (n&atilde;o apaga)" onclick="i3GEO.editorGM.deleteSelectedShape()"><img src="'+i3GEO.configura.locaplic+'/imagens/gisicons/selected-delete.png" /></button>'+' <button title="Salvar/excluir dados" onclick="i3GEO.editorGM.salvaLimite.inicia()"><img src="'+i3GEO.configura.locaplic+'/imagens/gisicons/vector-save.png" /></button>'+' <button title="Editar atributos" onclick="i3GEO.editorGM.editarAtributos.ativa(this)"><img src="'+i3GEO.configura.locaplic+'/imagens/gisicons/annotation-form.png" /></button>'+' <button title="Ajuda" onmousedown="i3GEO.editorGM.mudaicone()" onclick="i3GEO.editorGM.ajuda()" ><img src="'+i3GEO.configura.locaplic+'/imagens/gisicons/help-contents.png" /></button>'+' <br><div id="i3geoCartoRegioesEditaveisDiv" ><img style="display:block;z-index:2" src="'+i3GEO.configura.locaplic+'/imagens/aguarde.gif" /></div></div>';return ins},ativaFoco:function(){i3GEO.util.mudaCursor(i3GEO.configura.cursores,"crosshair",i3GEO.Interface.IDMAPA,i3GEO.configura.locaplic);i3GEO.barraDeBotoes.ativaIcone("pan");i3GEO.editorGM.mudaicone();i3GEO.Interface.googlemaps.recalcPar()},setSelection:function(shape){if(shape.setEditable){shape.setEditable(!shape.editable)}else{shape.editable=true;shape.setIcon({url:i3GEO.editorGM.iconePonto(true)})}},clearSelection:function(){var i,n=i3GEO.desenho.googlemaps.shapes.length;for(i=0;i<n;i++){if(i3GEO.desenho.googlemaps.shapes[i]!=""&&i3GEO.desenho.googlemaps.shapes[i].setEditable){i3GEO.desenho.googlemaps.shapes[i].setEditable(false)}else if(i3GEO.desenho.googlemaps.shapes[i]!=""){i3GEO.desenho.googlemaps.shapes[i].editable=false;if(i3GEO.desenho.googlemaps.shapes[i].setIcon){i3GEO.desenho.googlemaps.shapes[i].setIcon({url:i3GEO.editorGM.iconePonto(false)})}}}},selectAll:function(){var i,n=i3GEO.desenho.googlemaps.shapes.length;for(i=0;i<n;i++){if(i3GEO.desenho.googlemaps.shapes[i]!=""&&i3GEO.desenho.googlemaps.shapes[i].setEditable){i3GEO.desenho.googlemaps.shapes[i].setEditable(true)}else if(i3GEO.desenho.googlemaps.shapes[i]!=""){i3GEO.desenho.googlemaps.shapes[i].editable=true;i3GEO.desenho.googlemaps.shapes[i].setIcon({url:i3GEO.editorGM.iconePonto(true)})}}},deleteSelectedShape:function(naoconfirma){if(!naoconfirma){naoconfirma=false}var i,n=i3GEO.desenho.googlemaps.shapes.length;if(n>0){if(naoconfirma===false){var x=window.confirm("Remove as figuras selecionadas?")}else{x=true}if(x){for(i=0;i<n;i++){if(i3GEO.desenho.googlemaps.shapes[i]!=""&&i3GEO.desenho.googlemaps.shapes[i].editable&&i3GEO.desenho.googlemaps.shapes[i].editable===true){i3GEO.desenho.googlemaps.shapes[i].setMap(null);i3GEO.desenho.googlemaps.shapes[i]=""}}}}else{i3GEO.janela.tempoMsg("Selecione pelo menos uma figura")}},selectedShapes:function(){var i,s=[],n=i3GEO.desenho.googlemaps.shapes.length;for(i=0;i<n;i++){if(i3GEO.desenho.googlemaps.shapes[i]!=""&&i3GEO.desenho.googlemaps.shapes[i].editable===true){s.push(i3GEO.desenho.googlemaps.shapes[i])}}return s},getCoordenadas:function(){var coordenadas=[],lista=[],n=i3GEO.desenho.googlemaps.shapes.length,tipo="",ps,nps,j,p,i,r={};for(i=0;i<n;i++){coordenadas=[];if(i3GEO.desenho.googlemaps.shapes[i]!=""&&i3GEO.desenho.googlemaps.shapes[i].editable===true){if(tipo==""){tipo=i3GEO.desenho.googlemaps.shapes[i].type}ps=i3GEO.desenho.googlemaps.shapes[i].getPath();nps=ps.getLength();for(j=0;j<nps;j++){p=ps.getAt(j);coordenadas.push([p.lng()+" "+p.lat()])}lista.push(coordenadas)}}r={"tipo":tipo,"coordenadas":lista};return r},toWKT:function(obj){var wkt=new Wkt.Wkt();wkt.fromObject(obj);return wkt.write()},merge:function(geoms){var n=geoms.length,w=new Wkt.Wkt(),g,m,i;w.read(geoms[0].toString());if(n>1){for(i=1;i<n;i++){g=geoms[i].toString();m=new Wkt.Wkt();m.read(g);w.merge(m)}}return w.write()},capturaPoligonoTema:{ativa:function(botao){i3GEO.editorGM.mudaicone(botao);i3GEO.eventos.cliquePerm.desativa();if(i3GEO.eventos.MOUSECLIQUE.toString().search("i3GEO.editorGM.capturaPoligonoTema.captura()")<0){i3GEO.eventos.MOUSECLIQUE.push("i3GEO.editorGM.capturaPoligonoTema.captura()")}i3GEO.util.mudaCursor(i3GEO.configura.cursores,"crosshair",i3GEO.Interface.IDMAPA,i3GEO.configura.locaplic)},desativa:function(){},captura:function(){var temp,tema="",regiao="",p,par,aguarde=$i("i3GEOjanelaEditor_imagemCabecalho");if(!$i("i3geoCartoRegioesEditaveis")){i3GEO.eventos.MOUSECLIQUE.remove("i3GEO.editorGM.capturaPoligonoTema.captura()")}else{temp=function(retorno){var temp,n,i,WicketWkt,wkt="",colunaid=i3GEO.editorGM.descregioes["a_"+regiao]["identificador"],valorid="",colunanome=i3GEO.editorGM.descregioes["a_"+regiao]["colunanomeregiao"],valornome="",aguarde=$i("i3GEOjanelaEditor_imagemCabecalho");if(aguarde){aguarde.style.visibility="hidden"}temp=retorno.data[0].resultado[0];if(temp===" "){i3GEO.janela.tempoMsg("Nada encontrado");return}i3GEO.editorGM.mudaicone();n=temp.length;for(i=0;i<n;i++){if(temp[i].alias=="wkt"){wkt=temp[i].valor}if(temp[i].alias==colunaid||temp[i].item==colunaid){valorid=temp[i].valor}if(temp[i].alias==colunanome||temp[i].item==colunanome){valornome=temp[i].valor}}WicketWkt=new Wkt.Wkt();try{WicketWkt.read(wkt)}catch(e1){try{wkt.read(wkt.replace('\n','').replace('\r','').replace('\t',''))}catch(e2){if(e2.name==='WKTError'){alert('Wicket could not understand the WKT string you entered. Check that you have parentheses balanced, and try removing tabs and newline characters.');return}}}obj=WicketWkt.toObject(i3GeoMap.defaults);i3GEO.editorGM.adicionaPoligonos(obj,tema,colunaid,valorid,colunanome,valornome);i3GEO.eventos.MOUSECLIQUE=[]};regiao=$i("i3geoCartoRegioesEditaveis").value;if(regiao!=""){tema=i3GEO.editorGM.regioestemas["a"+regiao];if(aguarde&&aguarde.style.visibility=="hidden"){aguarde.style.visibility="visible";p=i3GEO.configura.locaplic+"/classesphp/mapa_controle.php";par="funcao=identifica3&opcao=tema&xy="+objposicaocursor.ddx+","+objposicaocursor.ddy+"&resolucao=5&g_sid="+i3GEO.configura.sid+"&ext="+i3GEO.parametros.mapexten+"&listaDeTemas=&wkt=sim&tema="+tema;cpJSON.call(p,"identifica",temp,par)}}}}},comboRegiaoEditavel:function(codigo_tipo_regiao){if(!codigo_tipo_regiao){codigo_tipo_regiao=""}var onde=$i("i3geoCartoRegioesEditaveisDiv"),temp=function(dados){var n=dados.length,ins='<br><p class="paragrafo" >Camadas edit&aacute;veis:</p>',i;ins+="<select onchange='i3GEO.editorGM.comboRegiaoEditavelOnchange(this)' id='i3geoCartoRegioesEditaveis' style='width:175px' ><option value=''>---</option>";for(i=0;i<n;i++){if(dados[i].esquemadb=="i3geo_metaestat"){ins+="<option value='"+dados[i].codigo_tipo_regiao+"'>"+dados[i].nome_tipo_regiao+"</option>";i3GEO.editorGM.descregioes["a_"+dados[i].codigo_tipo_regiao]=dados[i]}}ins+="</select>";if(onde){onde.innerHTML=ins}return ins};i3GEO.php.listaTipoRegiao(temp,codigo_tipo_regiao)},comboRegiaoEditavelOnchange:function(combo){if(combo.value===""){return}i3GEO.editorGM.editarAtributos.desativa();var temp=function(retorno){if(i3GEO.arvoreDeCamadas.pegaTema(retorno.layer)==""){i3GEO.php.adtema(i3GEO.atualiza,retorno.mapfile);i3GEO.editorGM.regioestemas["a"+$i("i3geoCartoRegioesEditaveis").value]=retorno.layer;i3GEO.editorGM.temasregioes[retorno.layer]=$i("i3geoCartoRegioesEditaveis").value}};i3GEO.php.mapfileTipoRegiao(temp,combo.value)},mudaicone:function(botao){var c=$i(i3GEO.editorGM.iddiv),ci=c.getElementsByTagName("img"),n=ci.length,i;for(i=0;i<n;i++){ci[i].parentNode.style.backgroundColor="#F5F5F5"}i3GEO.eventos.MOUSECLIQUE=[];i3GEO.editorGM.capturaPoligonoTema.desativa();i3GEO.editorGM.editarAtributos.desativa();if(botao&&botao.style){botao.style.backgroundColor="#cedff2"}},digitalizaPol:function(botao){i3GEO.editorGM.mudaicone(botao);i3GEO.util.mudaCursor(i3GEO.configura.cursores,"pointer",i3GEO.Interface.IDMAPA,i3GEO.configura.locaplic);i3GEO.editorGM.drawingManager.setOptions({drawingMode:google.maps.drawing.OverlayType.POLYGON})},digitalizaPt:function(botao){i3GEO.editorGM.mudaicone(botao);i3GEO.util.mudaCursor(i3GEO.configura.cursores,"pointer",i3GEO.Interface.IDMAPA,i3GEO.configura.locaplic);i3GEO.editorGM.drawingManager.setOptions({drawingMode:google.maps.drawing.OverlayType.MARKER})},seleciona:function(botao){i3GEO.editorGM.mudaicone(botao);i3GEO.util.mudaCursor(i3GEO.configura.cursores,"pointer",i3GEO.Interface.IDMAPA,i3GEO.configura.locaplic);i3GEO.editorGM.drawingManager.setOptions({drawingMode:null})},adicionaPoligonos:function(obj,tema,colunaid,valorid,colunanome,valornome){if(!tema){tema=$i("i3geoCartoRegioesEditaveis").value}if(!colunaid){colunaid=""}if(!valorid){valorid=""}if(!colunanome){colunanome=""}if(!valornome){valornome=""}var pol;if(Wkt.isArray(obj)){for(i in obj){if(obj.hasOwnProperty(i)&&!Wkt.isArray(obj[i])){pol=new google.maps.Polygon({path:obj[i].getPath(),map:i3GeoMap,fillColor:'#ffff00',fillOpacity:.5,strokeWeight:2,clickable:true,zIndex:1,editable:true,tema:tema,colunaid:colunaid,valorid:valorid,colunanome:colunanome,valornome:valornome});google.maps.event.addListener(pol,'click',function(){i3GEO.editorGM.setSelection(pol)});i3GEO.desenho.googlemaps.shapes.push(pol)}}return}if(obj.type==='polygon'||obj.type==='linestring'){pol=new google.maps.Polygon({paths:obj.getPaths(),map:i3GeoMap,fillColor:'#ffff00',fillOpacity:.5,strokeWeight:2,clickable:true,zIndex:1,editable:true,tema:tema,colunaid:colunaid,valorid:valorid,colunanome:colunanome,valornome:valornome});google.maps.event.addListener(pol,'click',function(){i3GEO.editorGM.setSelection(pol)});i3GEO.desenho.googlemaps.shapes.push(pol);return}if(obj.type==='marker'){i3GEO.editorGM.selectAll();if(i3GEO.desenho.googlemaps.shapes.length>0){i3GEO.editorGM.deleteSelectedShape(true)}pol=new google.maps.Marker({position:new google.maps.LatLng(obj.getPosition().ob,obj.getPosition().pb),map:i3GeoMap,icon:{url:i3GEO.editorGM.iconePonto(false)},clickable:true,zIndex:1,draggable:true,tema:tema,colunaid:colunaid,valorid:valorid,colunanome:colunanome,valornome:valornome,editable:false});google.maps.event.addListener(pol,'click',function(){i3GEO.editorGM.setSelection(pol)});i3GEO.desenho.googlemaps.shapes.push(pol);return}},salvaLimite:{inicia:function(){if(i3GEO.login.verificaCookieLogin()===false){i3GEO.janela.tempoMsg("Voc&ecirc; precisa fazer login para usar essa op&ccedil;&atilde;o");return}var s=i3GEO.editorGM.selectedShapes(),n=s.length,janela=YAHOO.i3GEO.janela.manager.find("salvaLimite");if(janela){janela.destroy()}if(n==1){s=s[0];i3GEO.editorGM.salvaLimite.criaJanelaFlutuante(i3GEO.editorGM.salvaLimite.html(s.colunaid,s.valorid,s.colunanome,s.valornome));new YAHOO.widget.Button("i3GEOFmetaestati3GEO.editorGMBotao1",{onclick:{fn:function(){i3GEO.editorGM.salvaLimite.gravaDados(true)}}});new YAHOO.widget.Button("i3GEOFmetaestati3GEO.editorGMBotao2",{onclick:{fn:function(){i3GEO.editorGM.salvaLimite.gravaDados(false)}}});new YAHOO.widget.Button("i3GEOFmetaestati3GEO.editorGMBotao3",{onclick:{fn:function(){i3GEO.editorGM.salvaLimite.excluiPoligono()}}})}else{i3GEO.janela.tempoMsg("Selecione uma figura")}},html:function(colunaIdElemento,valorIdElemento,colunaNomeElemento,valorNomeElemento){var ins=''+'<p class=paragrafo >Se o valor do c&oacute;digo for vazio, ser&aacute; criado um novo elemento. Caso contr&aacute;rio, os valores atualmente registrados ser&atilde;o atualizados.</p>'+'<p class=paragrafo >Edite os atributos:</p>'+'<input type=hidden id="inputColunaIdElemento" value="'+colunaIdElemento+'" />'+'<input type=hidden id="inputColunaNomeElemento" value="'+colunaNomeElemento+'" />'+'<input type=hidden id="inputIdentificadorElemento" value="'+valorIdElemento+'" />'+'<input type=hidden id="inputNomeElemento" value="'+valorNomeElemento+'" />'+'<p class=paragrafo >C&oacute;digo:</p>'+'<p class=paragrafo ><input class=digitar type=text id="inputIdentificadorNovoElemento" value="'+valorIdElemento+'" style="width:180;cursor:text" /></p>'+'<p class=paragrafo >Nome:</p>'+'<p class=paragrafo ><input class=digitar type=text id="inputNomeNovoElemento" value="'+valorNomeElemento+'" style="width:180;cursor:text" /></p>'+'<p class=paragrafo >Escolha a opera&ccedil;&atilde;o desejada:</p>'+'<input id=i3GEOFmetaestati3GEO.editorGMBotao1 type="button" value="Salvar tudo" />'+'&nbsp;<input id=i3GEOFmetaestati3GEO.editorGMBotao2 type="button" value="Salvar apenas os atributos" />'+'<br><br><input id=i3GEOFmetaestati3GEO.editorGMBotao3 type="button" value="Excluir" />';return ins},criaJanelaFlutuante:function(html){var titulo,cabecalho,minimiza,janela;cabecalho=function(){};minimiza=function(){i3GEO.janela.minimiza("salvaLimite")};titulo="Salva limite&nbsp;&nbsp;&nbsp;</a>";janela=i3GEO.janela.cria("300px","265px","","","",titulo,"salvaLimite",true,"hd",cabecalho,minimiza);$i("salvaLimite_corpo").style.backgroundColor="white";$i("salvaLimite_corpo").innerHTML=html;YAHOO.util.Event.addListener(janela[0].close,"click",i3GEO.editorGM.mudaicone)},gravaDados:function(comwkt){if(i3GEO.login.verificaCookieLogin()===false){i3GEO.janela.tempoMsg("Voc&ecirc; precisa fazer login para usar essa op&ccedil;&atilde;o");return}if(!window.confirm("Grava mesmo os dados?")){return}var p,codigo_tipo_regiao=$i("i3geoCartoRegioesEditaveis").value,identificadornovo=$i("inputIdentificadorNovoElemento").value,identificador=$i("inputIdentificadorElemento").value,nome=$i("inputNomeNovoElemento").value,wkt="",temp=function(retorno){i3GEO.editorGM.deleteSelectedShape(true);var janela=YAHOO.i3GEO.janela.manager.find("salvaLimite");if(janela){janela.destroy()}i3GEO.Interface.redesenha()};if(comwkt===true){wkt=i3GEO.editorGM.toWKT(i3GEO.editorGM.selectedShapes()[0])}else{if(identificadornovo===identificador&&$i("inputNomeElemento").value===nome){i3GEO.janela.tempoMsg("Valores iguais ao original");return}}p=i3GEO.configura.locaplic+"/admin/php/metaestat.php?funcao=mantemDadosRegiao&tipo=";cpJSON.call(p,"foo",temp,"&codigo_tipo_regiao="+codigo_tipo_regiao+"&identificadornovo="+identificadornovo+"&identificador="+identificador+"&nome="+nome+"&wkt="+wkt)},excluiPoligono:function(){if(i3GEO.login.verificaCookieLogin()===false){i3GEO.janela.tempoMsg("Voc&ecirc; precisa fazer login para usar essa op&ccedil;&atilde;o");return}if(!window.confirm("Exclui mesmo o poligono?")){return}var codigo_tipo_regiao=$i("i3geoCartoRegioesEditaveis").value,identificador=$i("inputIdentificadorElemento").value,temp=function(retorno){i3GEO.editorGM.deleteSelectedShape(true);var janela=YAHOO.i3GEO.janela.manager.find("salvaLimite");if(janela){janela.destroy()}i3GEO.Interface.redesenha()},p=i3GEO.configura.locaplic+"/admin/php/metaestat.php?funcao=mantemDadosRegiao&tipo=excluir";cpJSON.call(p,"foo",temp,"&codigo_tipo_regiao="+codigo_tipo_regiao+"&identificador="+identificador)}},editarAtributos:{aliascolunas:"",x:"",y:"",ativa:function(botao){if($i("i3geoCartoRegioesEditaveis").value==""){i3GEO.janela.tempoMsg("Escolha uma regiao");return}i3GEO.editorGM.mudaicone(botao);if(i3GEO.eventos.MOUSECLIQUE.toString().search("i3GEO.editorGM.editarAtributos.captura()")<0){i3GEO.eventos.MOUSECLIQUE.push("i3GEO.editorGM.editarAtributos.captura()")}var janela=YAHOO.i3GEO.janela.manager.find("editaAtributos");if(janela){$i("editarAtributosForm").innerHTML=""}else{i3GEO.editorGM.editarAtributos.criaJanelaFlutuante(i3GEO.editorGM.editarAtributos.html());i3GEO.editorGM.editarAtributos.comboVariaveis()}},desativa:function(){var janela=YAHOO.i3GEO.janela.manager.find("editaAtributos");if(janela){janela.destroy()}},criaJanelaFlutuante:function(html){var janela,titulo,cabecalho,minimiza;cabecalho=function(){};minimiza=function(){i3GEO.janela.minimiza("editaAtributos")};titulo="Atributos&nbsp;&nbsp;&nbsp;</a>";janela=i3GEO.janela.cria("250px","265px","","","",titulo,"editaAtributos",false,"hd",cabecalho,minimiza);$i("editaAtributos_corpo").style.backgroundColor="white";$i("editaAtributos_corpo").innerHTML=html;i3GEO.janela.tempoMsg("Ap&oacute;s escolher a medida da vari&aacute;vel, clique no mapa para escolher o limite geogr&aacute;fico.");YAHOO.util.Event.addListener(janela[0].close,"click",i3GEO.editorGM.mudaicone)},html:function(){var ins=''+'<p class="paragrafo" ><div id="editarAtributosVariaveis" ></div></p>'+'<p class="paragrafo" ><div id="editarAtributosMedidasVariavel" ></div></p>'+'<p class="paragrafo" ><div id="editarAtributosRegiao" ></div></p>'+'<p class="paragrafo" ><div id="editarAtributosForm" ></div></p>'+'';return ins},comboVariaveis:function(){var temp=function(dados){var i,n=dados.length,ins='';ins+='<p class="paragrafo" >Escolha uma vari&aacute;vel para editar</p>';ins+="<select style='box-shadow:0 1px 5px gray;width:200px' onchange='i3GEO.editorGM.editarAtributos.comboMedidasVariavel(this)'><option value=''>---</option>";for(i=0;i<n;i++){ins+="<option title='"+dados[i].descricao+"' value='"+dados[i].codigo_variavel+"'>"+dados[i].nome+"</option>"}ins+="</select>";$i("editarAtributosVariaveis").innerHTML=ins};i3GEO.php.listaVariavel(temp,"i3geo_metaestat")},comboMedidasVariavel:function(comboMedidas){var temp=function(dados){var i,n=dados.length,ins='';ins+='<p class="paragrafo" >Escolha uma medida da vari&aacute;vel para editar</p>';ins+="<select id='editarAtributosComboMedidas' style='box-shadow:0 1px 5px gray;width:200px' onchange=''><option value=''>---</option>";for(i=0;i<n;i++){if(dados[i].esquemadb=="i3geo_metaestat"&&dados[i].codigo_tipo_regiao==$i("i3geoCartoRegioesEditaveis").value){ins+="<option value='"+dados[i].id_medida_variavel+"'>"+dados[i].nomemedida+"</option>"}}ins+="</select>";$i("editarAtributosMedidasVariavel").innerHTML=ins};if(comboMedidas.value!==""){i3GEO.php.listaMedidaVariavel(comboMedidas.value,temp)}},captura:function(){if(!YAHOO.i3GEO.janela.manager.find("editaAtributos")){i3GEO.editorGM.mudaicone(botao);return}i3GEO.editorGM.editarAtributos.x=objposicaocursor.ddx;i3GEO.editorGM.editarAtributos.y=objposicaocursor.ddy;i3GEO.editorGM.editarAtributos.pegaDados()},pegaDados:function(){var p=i3GEO.configura.locaplic+"/admin/php/metaestat.php?funcao=listaAtributosMedidaVariavelXY",codigo_tipo_regiao=$i("i3geoCartoRegioesEditaveis").value,id_medida_variavel=$i("editarAtributosComboMedidas").value,temp=function(retorno){var atr=retorno.atributos,i=0,n=atr.dados.length,j=0,idunico="",nj=atr.aliascolunas.length,ins=""+'<p class=paragrafo >Limite geogr&aacute;fico escolhido:</p>'+'<p class=paragrafo ><b>Nome: </b>'+retorno.regiao.nomeregiao+'</p>'+'<p class=paragrafo ><b>C&oacute;digo: </b>'+retorno.regiao.identificador_regiao+'</p>'+'<input type=hidden id="editarAtributosidentificador_regiao" value="'+retorno.regiao.identificador_regiao+'" />'+'<p class=paragrafo >Atributos:</p>'+'<input id=editarAtributosAdicionar value="Adicionar um novo" />'+'&nbsp;<input id=editarAtributosSalvar value="Salvar" />';$i("editarAtributosRegiao").innerHTML=ins;ins="";for(i=0;i<n;i++){for(j=0;j<nj;j++){if(atr.aliascolunas[j]=="idunico"){idunico=atr.dados[i][atr.colunas[j]]}}ins+="<hr><div><p class=paragrafo style='color:blue;cursor:pointer' onclick='i3GEO.editorGM.editarAtributos.excluir("+idunico+")' >excluir</p>";for(j=0;j<nj;j++){if(atr.aliascolunas[j]!=="idunico"){ins+='<p class=paragrafo >'+atr.aliascolunas[j]+':<br>'+'<input class=digitar id="idunico_'+idunico+'" value="'+atr.dados[i][atr.colunas[j]]+'" name="'+atr.colunas[j]+'" /></p>'}}}$i("editarAtributosForm").innerHTML=ins;new YAHOO.widget.Button("editarAtributosAdicionar",{onclick:{fn:function(){var novoel=document.createElement("div"),ins="<hr><br>";for(j=0;j<nj;j++){if(atr.aliascolunas[j]!=="idunico"){ins+='<p class=paragrafo >'+atr.aliascolunas[j]+' - '+atr.descricao[j]+':<br>'+'<input class=digitar id="" value="" name="'+atr.colunas[j]+'" /></p>'}}ins+"<br></div>";novoel.innerHTML=ins;$i("editarAtributosForm").appendChild(novoel)}}});new YAHOO.widget.Button("editarAtributosSalvar",{onclick:{fn:function(){i3GEO.editorGM.editarAtributos.salva()}}})};cpJSON.call(p,"foo",temp,"&codigo_tipo_regiao="+codigo_tipo_regiao+"&id_medida_variavel="+id_medida_variavel+"&x="+i3GEO.editorGM.editarAtributos.x+"&y="+i3GEO.editorGM.editarAtributos.y)},excluir:function(id){if(i3GEO.login.verificaCookieLogin()===false){i3GEO.janela.tempoMsg("Voc&ecirc; precisa fazer login para usar essa op&ccedil;&atilde;o");return}var p=i3GEO.configura.locaplic+"/admin/php/metaestat.php?funcao=excluiAtributosMedidaVariavel",codigo_tipo_regiao=$i("i3geoCartoRegioesEditaveis").value,id_medida_variavel=$i("editarAtributosComboMedidas").value,identificador_regiao=$i("editarAtributosidentificador_regiao").value,temp=function(retorno){i3GEO.editorGM.editarAtributos.pegaDados();i3GEO.janela.fechaAguarde("aguardeSalvaAtributos")};i3GEO.janela.AGUARDEMODAL=true;i3GEO.janela.abreAguarde("aguardeSalvaAtributos","Salvando...");i3GEO.janela.AGUARDEMODAL=false;cpJSON.call(p,"foo",temp,"&codigo_tipo_regiao="+codigo_tipo_regiao+"&identificador_regiao="+identificador_regiao+"&id_medida_variavel="+id_medida_variavel+"&id="+id)},salva:function(){if(i3GEO.login.verificaCookieLogin()===false){i3GEO.janela.tempoMsg("Voc&ecirc; precisa fazer login para usar essa op&ccedil;&atilde;o");return}var container=$i("editarAtributosForm"),divsT=container.getElementsByTagName("div"),n=divsT.length,i=0,dv="",inputs="",codigo_tipo_regiao=$i("i3geoCartoRegioesEditaveis").value,id_medida_variavel=$i("editarAtributosComboMedidas").value,identificador_regiao=$i("editarAtributosidentificador_regiao").value,nj,j,colunas=[],colunasT=[],valores=[],valoresT=[],idsunicosT=[],p=i3GEO.configura.locaplic+"/admin/php/metaestat.php?funcao=salvaAtributosMedidaVariavel",re=new RegExp("idunico_","g"),temp=function(retorno){i3GEO.editorGM.editarAtributos.pegaDados();i3GEO.editorGM.atualizaCamadasMetaestat();i3GEO.janela.fechaAguarde("aguardeSalvaAtributos")};if(codigo_tipo_regiao==""){i3GEO.janela.tempoMsg("Problemas com o codigo da regiao");return}if(id_medida_variavel==""){i3GEO.janela.tempoMsg("Escolha uma medida");return}if(identificador_regiao==""){i3GEO.janela.tempoMsg("Problemas com o identificador da regiao");return}for(i=0;i<n;i++){dv=divsT[i];inputs=dv.getElementsByTagName("input");nj=inputs.length;colunas=[];valores=[];for(j=0;j<nj;j++){colunas.push(inputs[j].name);valores.push(inputs[j].value)}idsunicosT.push(inputs[0].id.replace(re,''));colunasT.push(colunas.join(";"));valoresT.push(valores.join(";"))}i3GEO.janela.AGUARDEMODAL=true;i3GEO.janela.abreAguarde("aguardeSalvaAtributos","Salvando...");i3GEO.janela.AGUARDEMODAL=false;cpJSON.call(p,"foo",temp,"&codigo_tipo_regiao="+codigo_tipo_regiao+"&identificador_regiao="+identificador_regiao+"&id_medida_variavel="+id_medida_variavel+"&colunas="+colunasT[0]+"&valores="+valoresT.join("|")+"&idsunicos="+idsunicosT.join(";"))}},ajuda:function(){var titulo,cabecalho,minimiza,html="";cabecalho=function(){};minimiza=function(){i3GEO.janela.minimiza("editaAtributosAjuda")};titulo="Ajuda&nbsp;</a>";i3GEO.janela.cria("400px","350px","","","",titulo,"editaAtributosAjuda",false,"hd",cabecalho,minimiza);$i("editaAtributosAjuda_corpo").style.backgroundColor="white";html+="<table class=lista8 >"+"<tr><td><img src='"+i3GEO.configura.locaplic+"/imagens/gisicons/polygon-create.png' /></td>"+"<td>Clique no mapa para tra&ccedil;ar um pol&iacute;gono novo. Cada clique corresponde a um v&eacute;rtice do pol&iacute;gono. Para encerrar o tra&ccedil;ado utilize um duplo clique. Ap&oacute;s tra&ccedil;ar um novo pol&iacute;gono pode-se selecion&aacute;-lo novamente e editar os v&eacute;rtices, se for necess&aacute;rio, ou mesmo apagar o pol&iacute;gono por completo. O novo pol&iacute;gono s&oacute; ser&aacute; salvo por meio da op&ccedil;&atilde;o espec&iacute;fica para isso.</td></tr>"+"<tr><td><img src='"+i3GEO.configura.locaplic+"/imagens/gisicons/layer-import.png' /></td>"+"<td>Utilize essa op&ccedil;&atilde;o para capturar os v&eacute;rtices de um pol&iacute;gono existente. O resultado da captura &eacute; uma figura que pode ser editada, ou seja, os v&eacute;rtices podem ser modificados de posi&ccedil;&atilde;o ou mesmo removidos. Ap&oacute;s editar, salve o novo pol&iacute;gono.</td></tr>"+"<tr><td><img src='"+i3GEO.configura.locaplic+"/imagens/gisicons/select.png' /></td>"+"<td>Ap&oacute;s ativar essa op&ccedil;&atilde;o clique no mapa sobre uma figura existente (que tenha sido capturada ou digtalizada). A figura passar&aacute; ent&atilde;o para o estado de 'selecionada' podendo ser utilizada por outras ferramentas de edi&ccedil;&atilde;o.</td></tr>"+"<tr><td><img src='"+i3GEO.configura.locaplic+"/imagens/gisicons/selected-delete.png' /></td>"+"<td>Remove da tela a figura que estiver selecionada. Essa opera&ccedil;&atilde;o n&atilde;o apaga o pol&iacute;gono do banco de dados, apenas remove do modo de edi&ccedil;&atilde;o.</td></tr>"+"<tr><td><img src='"+i3GEO.configura.locaplic+"/imagens/gisicons/vector-save.png' /></td>"+"<td>Salva no banco de dados a figura que estiver selecionada. Essa op&ccedil;&atilde;o altera apenas os atributos do limite geogr&aacute;fico, n&atilde;o afetando os valores armazenados em cada medida de vari&aacute;vel.</td></tr>"+"<tr><td><img src='"+i3GEO.configura.locaplic+"/imagens/gisicons/annotation-form.png' /></td>"+"<td>Abre um formul&aacute;rio que permite alterar os valores de uma medida de vari&aacute;vel relacionada a uma determinada regi&atilde;o. Ap&oacute;s abrir o formul&aacute;rio, clique no mapa sobre a regi&atilde;o desejada, mas escolha a medida da vari&aacute;vel primeiro. Os valores j&aacute; existentes poder&atilde;o ent&atilde;o ser alterados ou podem ser adicionados novos.</td></tr>"+"</table>";$i("editaAtributosAjuda_corpo").innerHTML=html}};google.maps.Marker.prototype.type='marker';google.maps.Polyline.prototype.type='polyline';google.maps.Polygon.prototype.type='polygon';google.maps.Rectangle.prototype.type='rectangle';google.maps.Circle.prototype.type='circle';(function(Wkt){Wkt.Wkt.prototype.isRectangle=false;Wkt.Wkt.prototype.construct={point:function(config,component){var c=component||this.components;config=config||{};config.position=new google.maps.LatLng(c[0].y,c[0].x);return new google.maps.Marker(config)},multipoint:function(config){var i,c,arr;c=this.components;config=config||{};arr=[];for(i=0;i<c.length;i+=1){arr.push(this.construct.point(config,c[i]))}return arr},linestring:function(config,component){var i,c;c=component||this.components;config=config||{editable:false};config.path=[];for(i=0;i<c.length;i+=1){config.path.push(new google.maps.LatLng(c[i].y,c[i].x))}return new google.maps.Polyline(config)},multilinestring:function(config){var i,c,arr;c=this.components;config=config||{editable:false};config.path=[];arr=[];for(i=0;i<c.length;i+=1){arr.push(this.construct.linestring(config,c[i]))}return arr},box:function(config,component){var c=component||this.components;config=config||{};config.bounds=new google.maps.LatLngBounds(new google.maps.LatLng(c[0].y,c[0].x),new google.maps.LatLng(c[1].y,c[1].x));return new google.maps.Rectangle(config)},polygon:function(config,component){var j,k,c,rings,verts;c=component||this.components;config=config||{editable:false};config.paths=[];rings=[];for(j=0;j<c.length;j+=1){verts=[];for(k=0;k<c[j].length-1;k+=1){verts.push(new google.maps.LatLng(c[j][k].y,c[j][k].x))}if(j!==0){if(config.reverseInnerPolygons==null||config.reverseInnerPolygons){verts.reverse()}}rings.push(verts)}config.paths=config.paths.concat(rings);if(this.isRectangle){return(function(){var bounds,v;bounds=new google.maps.LatLngBounds();for(v in rings[0]){if(rings[0].hasOwnProperty(v)){bounds.extend(rings[0][v])}}return new google.maps.Rectangle({bounds:bounds})}())}else{return new google.maps.Polygon(config)}},multipolygon:function(config){var i,c,arr;c=this.components;config=config||{editable:false};config.path=[];arr=[];for(i=0;i<c.length;i+=1){arr.push(this.construct.polygon(config,c[i]))}return arr}};Wkt.Wkt.prototype.deconstruct=function(obj,multiFlag){var features,i,j,multiFlag,verts,rings,sign,tmp,response,lat,lng;if(google.maps.geometry){sign=google.maps.geometry.spherical.computeSignedArea};if(obj.constructor===google.maps.LatLng){response={type:'point',components:[{x:obj.lng(),y:obj.lat()}]};return response}if(obj.constructor===google.maps.Point){response={type:'point',components:[{x:obj.x,y:obj.y}]};return response}if(obj.constructor===google.maps.Marker){response={type:'point',components:[{x:obj.getPosition().lng(),y:obj.getPosition().lat()}]};return response}if(obj.constructor===google.maps.Polyline){verts=[];for(i=0;i<obj.getPath().length;i+=1){tmp=obj.getPath().getAt(i);verts.push({x:tmp.lng(),y:tmp.lat()})}response={type:'linestring',components:verts};return response}if(obj.constructor===google.maps.Polygon){rings=[];if(multiFlag===undefined){multiFlag=(function(){var areas,i,l;l=obj.getPaths().length;if(l<=1){return false}if(l===2){if(sign(obj.getPaths().getAt(0))*sign(obj.getPaths().getAt(1))<0){return false}return true}areas=obj.getPaths().getArray().map(function(k){return sign(k)/Math.abs(sign(k)); });if(areas.indexOf(areas[0])!==areas.lastIndexOf(areas[0])){multiFlag=true;return true}return false}())}for(i=0;i<obj.getPaths().length;i+=1){tmp=obj.getPaths().getAt(i);verts=[];for(j=0;j<obj.getPaths().getAt(i).length;j+=1){verts.push({x:tmp.getAt(j).lng(),y:tmp.getAt(j).lat()})}if(!tmp.getAt(tmp.length-1).equals(tmp.getAt(0))){if(i%2!==0){verts.unshift({x:tmp.getAt(tmp.length-1).lng(),y:tmp.getAt(tmp.length-1).lat()})}else{verts.push({x:tmp.getAt(0).lng(),y:tmp.getAt(0).lat()})}}if(obj.getPaths().length>1&&i>0){if(sign(obj.getPaths().getAt(i))>0&&sign(obj.getPaths().getAt(i-1))>0||sign(obj.getPaths().getAt(i))<0&&sign(obj.getPaths().getAt(i-1))<0&&!multiFlag){verts=[verts]}}if(i%2!==0){verts.reverse()}rings.push(verts)}response={type:(multiFlag)?'multipolygon':'polygon',components:rings};return response}if(obj.constructor===google.maps.Circle){var point=obj.getCenter();var radius=obj.getRadius();verts=[];var d2r=Math.PI/180; var r2d=180/Math.PI; radius=radius/1609; var earthsradius=3963;var num_seg=32;var rlat=(radius/earthsradius)*r2d;var rlng=rlat/Math.cos(point.lat()*d2r);for(var n=0;n<=num_seg;n++){var theta=Math.PI*(n/(num_seg/2));lng=point.lng()+(rlng*Math.cos(theta));lat=point.lat()+(rlat*Math.sin(theta));verts.push({x:lng,y:lat})}response={type:'polygon',components:[verts]};return response}if(obj.constructor===google.maps.LatLngBounds){tmp=obj;verts=[];verts.push({x:tmp.getSouthWest().lng(),y:tmp.getNorthEast().lat()});verts.push({x:tmp.getNorthEast().lng(),y:tmp.getNorthEast().lat()});verts.push({x:tmp.getNorthEast().lng(),y:tmp.getSouthWest().lat()});verts.push({x:tmp.getSouthWest().lng(),y:tmp.getSouthWest().lat()});verts.push({x:tmp.getSouthWest().lng(),y:tmp.getNorthEast().lat()});response={type:'polygon',isRectangle:true,components:[verts]};return response}if(obj.constructor===google.maps.Rectangle){tmp=obj.getBounds();verts=[];verts.push({x:tmp.getSouthWest().lng(),y:tmp.getNorthEast().lat()});verts.push({x:tmp.getNorthEast().lng(),y:tmp.getNorthEast().lat()});verts.push({x:tmp.getNorthEast().lng(),y:tmp.getSouthWest().lat()});verts.push({x:tmp.getSouthWest().lng(),y:tmp.getSouthWest().lat()});verts.push({x:tmp.getSouthWest().lng(),y:tmp.getNorthEast().lat()});response={type:'polygon',isRectangle:true,components:[verts]};return response}if(obj.constructor===google.maps.Data.Feature){return this.deconstruct.call(this,obj.getGeometry())}if(obj.constructor===google.maps.Data.Point){response={type:'point',components:[{x:obj.get().lng(),y:obj.get().lat()}]};return response}if(obj.constructor===google.maps.Data.LineString){verts=[];for(i=0;i<obj.getLength();i+=1){vertex=obj.getAt(i);verts.push({x:vertex.lng(),y:vertex.lat()})}response={type:'linestring',components:verts};return response}if(obj.constructor===google.maps.Data.Polygon){var rings=[];for(i=0;i<obj.getLength();i+=1){ring=obj.getAt(i);var verts=[];for(j=0;j<ring.getLength();j+=1){vertex=ring.getAt(j);verts.push({x:vertex.lng(),y:vertex.lat()})}verts.push({x:ring.getAt(0).lng(),y:ring.getAt(0).lat()});rings.push(verts)}response={type:'polygon',components:rings};return response}if(obj.constructor===google.maps.Data.MultiPoint){verts=[];for(i=0;i<obj.getLength();i+=1){vertex=obj.getAt(i);verts.push([{x:vertex.lng(),y:vertex.lat()}])}response={type:'multipoint',components:verts};return response}if(obj.constructor===google.maps.Data.MultiLineString){linestrings=[];for(i=0;i<obj.getLength();i+=1){verts=[];var linestring=obj.getAt(i);for(j=0;j<linestring.getLength();j+=1){vertex=linestring.getAt(j);verts.push({x:vertex.lng(),y:vertex.lat()})}linestrings.push(verts)}response={type:'multilinestring',components:linestrings};return response}if(obj.constructor===google.maps.Data.MultiPolygon){var polygons=[];for(k=0;k<obj.getLength();k+=1){var polygon=obj.getAt(k);var rings=[];for(i=0;i<polygon.getLength();i+=1){ring=polygon.getAt(i);var verts=[];for(j=0;j<ring.getLength();j+=1){vertex=ring.getAt(j);verts.push({x:vertex.lng(),y:vertex.lat()})}verts.push({x:ring.getAt(0).lng(),y:ring.getAt(0).lat()});rings.push(verts)}polygons.push(rings)}response={type:'multipolygon',components:polygons};return response}if(obj.constructor===google.maps.Data.GeometryCollection){var objects=[];for(k=0;k<obj.getLength();k+=1){var object=obj.getAt(k);objects.push(this.deconstruct.call(this,object))}response={type:'geometrycollection',components:objects};return response}if(Wkt.isArray(obj)){features=[];for(i=0;i<obj.length;i+=1){features.push(this.deconstruct.call(this,obj[i],true))}response={type:(function(){var k,type=obj[0].constructor;for(k=0;k<obj.length;k+=1){if(obj[k].constructor!==type){return'geometrycollection'}}switch(type){case google.maps.Marker:return'multipoint';case google.maps.Polyline:return'multilinestring';case google.maps.Polygon:return'multipolygon';default:return'geometrycollection'}}()),components:(function(){var i,comps;comps=[];for(i=0;i<features.length;i+=1){if(features[i].components){comps.push(features[i].components)}}return{comps:comps}}())};response.components=response.components.comps;return response}}}(Wkt||require('./wicket')));
3 3 \ No newline at end of file
... ...
ferramentas/metaestat/editorlimites.php
1 1 <?php
2   -//@TODO atualizar a interface para black
3 2 /*
4 3 Title: Editor de limites geograficos do sistema de metadados estatisticos
5 4  
... ... @@ -40,90 +39,98 @@ include_once(dirname(__FILE__).&quot;/../../ms_configura.php&quot;);
40 39 <meta http-equiv="Category" content="i3Geo Mapa interativo geoprocessamento sig mobile">
41 40 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
42 41 <title>i3GEO - Editor de limites</title>
43   -
  42 +<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false&libraries=drawing "></script>
  43 +<script type="text/javascript" src="../../classesjs/i3geo.js"></script>
  44 +<link rel="stylesheet" type="text/css" href="../../css/black.css">
  45 +<script src="editorlimites_dependencias.php"></script>
44 46 </head>
45   -<body id="i3geo" style="background-color:white">
46   -<!-- inclui o nome do usuario logado -->
47   -<div id="i3GEONomeLogin" style="position:absolute;left:10px;top:12px;font-size:11px;z-index:50000"></div>
48   -<table id='mst' summary="" style='display:none;' width=100% cellspacing='0'>
49   - <tr style="border:0px">
50   - <td id="barraSuperior" style="background-image:url('../../imagens/visual/default/cabeca.png');height:10px"></td>
51   - </tr>
52   - <tr>
53   - <td id="contemMenu" style="text-align:right;border-width:0pt 0pt 1px;border-color:rgb(240,240,240)">
54   - <!--menu suspenso-->
55   - <div id="menus" ></div>
56   - </td>
57   - </tr>
58   - <tr>
59   - <td style="vertical-align:top;border-width:0px;">
60   - <table width="100%" style="vertical-align:top;border-width:0px">
61   - <tr>
62   - <td class=verdeclaro id=contemImg >
63   - <div id=googlemapsdiv style="position:relative;background-image:url('../../imagens/i3geo1bw.jpg');"></div>
64   - </td>
65   - </tr>
66   - </table>
67   - </td>
68   - </tr>
69   - <tr>
70   - <td>
71   - <table width=100% >
72   - <tr>
73   - <td class=tdbranca >
74   - <!--
75   - Nesse div s&atilde;o inclu&iacute;dos os &iacute;cones que permitem ao usu&aacute;rio modificar o visual de cores dos &iacute;cones
76   - <div id=visual ></div>
77   - -->
78   - <!-- bot&atilde;o de compartilhamento em redes sociais -->
79   - <div id=i3GEOcompartilhar style="width:170px;margin:auto;text-align:left;border-top:1px solid rgb(250,250,250);padding-top:1px" ></div>
80   - <!-- aqui ser&aacute; inclu&iacute;do o contador de tempo quando o temporizador de redesenho do mapa estiver ativo -->
81   - <div id=tempoRedesenho style=color:green;background-color:black;width:50px;display:none ></div>
82   - </td>
83   - <td class=tdbranca >
84   - <!-- aqui ser&aacute; inclu&iacute;da a escala num&eacute;rica -->
85   - <div id=escala style="margin:auto;text-align:right;" ></div>
86   - </td>
87   - <td class=tdbranca >
88   - <!-- aqui ser&aacute; inclu&iacute;do o gadget que mostra a coordenada geogr&aacute;fica da posi&ccedil;&atilde;o do mouse -->
89   - <div id=localizarxy style="margin:auto;text-align:left;font-size:10px;display:inline-table"></div>
90   - </td>
91   - <!-- aqui ser&atilde;o inclu&iacute;das as bandeiras que permitem a troca de idioma -->
92   - <td class=tdbranca >
93   - <div id=seletorIdiomas ></div>
94   - </td>
95   - </tr>
96   - </table>
97   - </td>
98   - </tr>
99   - <tr style="border:0px">
100   - <td id="barraInferior" style="background-image:url('../../imagens/visual/default/rodape.png');height:10px"></td>
101   - </tr>
102   -</table>
103   -<table id="i3GEOlogoMarca" style='margin: 0px auto;box-shadow:0 1px 13px gray;border-radius:5px;'>
104   - <tr>
105   - <td><div id=versaoi3geo ></div><h2 style="font-size:10px;font-family: Verdana, Arial, Helvetica, sans-serif;">i3Geo - Software livre para cria&ccedil;&atilde;o de mapas interativos e geoprocessamento</h2><h3 style="font-size:10px;font-family: Verdana, Arial, Helvetica, sans-serif;">Baseado no Mapserver, &eacute; licenciado sob GPL e integra o Portal do Software P&uacute;blico Brasileiro</h3></td>
106   - </tr>
107   - <tr>
108   - <td style="padding:10px;"><img style="width:560px;height:81px" alt="" src='../../imagens/logo_inicio.png' ></td>
109   - </tr>
110   - <tr>
111   - <td>
112   - <!--
  47 +
  48 +<body id="i3geo" style='margin-left: 7px; background: white;'>
  49 + <!-- inclui o nome do usuario logado -->
  50 + <div id="i3GEONomeLogin" style="position: absolute; left: 10px; top: 12px; font-size: 11px; z-index: 50000"></div>
  51 + <table id='mst' summary="" style='display: none;' width=100% cellspacing='0'>
  52 + <tr>
  53 + <td id="contemMenu" style="background: black; height: 30px; text-align: right; border-width: 0pt 0pt 1px; border-color: rgb(240, 240, 240)">
  54 + <!--menu suspenso-->
  55 + <div id="menus" style="height: 30px;"></div>
  56 + </td>
  57 + </tr>
  58 + <tr>
  59 + <td style="vertical-align: top; border-width: 0px;">
  60 + <table width="100%" style="vertical-align: top; border-width: 0px">
  61 + <tr>
  62 + <td class=verdeclaro id=contemImg>
  63 + <div id=googlemapsdiv style="position: relative; background-image: url('../../imagens/i3geo1bw.jpg');"></div>
  64 + </td>
  65 + </tr>
  66 + </table>
  67 + </td>
  68 + </tr>
  69 + <tr>
  70 + <td>
  71 + <table style="width: 100%; height: 28px">
  72 + <tr>
  73 + <td class=fundoRodape style="width: 25%">
  74 + <!-- aqui ser&aacute; inclu&iacute;da a escala num&eacute;rica -->
  75 + <div id=escala style="margin: auto; text-align: right; left: 15px;"></div>
  76 + </td>
  77 + <td class=fundoRodape style="width: 5%"></td>
  78 + <td class=fundoRodape style="width: 40%">
  79 + <!-- aqui ser&aacute; inclu&iacute;do o gadget que mostra a coordenada geogr&aacute;fica da posi&ccedil;&atilde;o do mouse -->
  80 + <div id=localizarxy style="margin: auto; text-align: left; font-size: 10px; display: inline-table"></div>
  81 + </td>
  82 + <td class=fundoRodape style="width: 20%">
  83 + <!-- bot&atilde;o de compartilhamento em redes sociais-->
  84 + <!--<div id=i3GEOcompartilhar style="width: 170px; margin: auto; text-align: left; padding-top: 1px"></div> -->
  85 + <!-- aqui ser&aacute; inclu&iacute;do o contador de tempo quando o temporizador de redesenho do mapa estiver ativo -->
  86 + <div id=tempoRedesenho style="z-index: 100; position: absolute; top: 0px; color: green; background-color: black; width: 50px; display: none"></div>
  87 + </td>
  88 + <!-- aqui ser&atilde;o inclu&iacute;das as bandeiras que permitem a troca de idioma -->
  89 + <td class=fundoRodape style="width: 10%;">
  90 + <div id=seletorIdiomas style="right: 15px;"></div>
  91 + </td>
  92 + </tr>
  93 + </table>
  94 + </td>
  95 + </tr>
  96 + </table>
  97 + <table id="i3GEOlogoMarca" style='margin: 0px auto; box-shadow: 0 1px 13px gray; border-radius: 5px;'>
  98 + <tr>
  99 + <td><div id=versaoi3geo></div>
  100 + <h2 style="font-size: 10px; font-family: Verdana, Arial, Helvetica, sans-serif;">i3Geo - Software livre para cria&ccedil;&atilde;o de mapas interativos e geoprocessamento</h2>
  101 + <h3 style="font-size: 10px; font-family: Verdana, Arial, Helvetica, sans-serif;">Baseado no Mapserver, &eacute; licenciado sob GPL e integra o Portal do Software P&uacute;blico Brasileiro</h3></td>
  102 + </tr>
  103 + <tr>
  104 + <td style="padding: 10px;"><img style="width: 560px; height: 81px" alt="" src='../../imagens/logo_inicio.png'></td>
  105 + </tr>
  106 + <tr>
  107 + <td>
  108 + <!--
113 109 <script id="ohloh" type="text/javascript" src="http://www.ohloh.net/p/150688/widgets/project_users.js?style=red"></script>
114 110 -->
115   - </td>
116   - </tr>
117   -</table>
118   -
119   -<div id="i3GEOguiaMovel" style="position:absolute;display:block;border:0px solid white;text-align:left;z-index:1000;background-color:none">
120   - <img id='i3GEOguiaMovelPuxador' onclick='i3GEO.guias.guiaMovel.abreFecha()' style='z-index:2;border:solid 0px white;left:0px;position:absolute;top:0px' width='0px' src='../../imagens/openbars.png' >
121   - <div id="i3GEOguiaMovelMolde" style="position:absolute;display:none;border:0px solid white;text-align:left;z-index:1000;background-color:gray">
122   - <div id='i3GEOguiaMovelIcones' style='overflow:none;left:0px;display:none;position:absolute;top:0px;text-align:center;height:0px;width:0px;border:solid 0px white;background-color:white' ></div>
123   - <div id='i3GEOguiaMovelConteudo' style='overflow:auto;display:none;position:absolute;border-color:gray;border-width:0px 0 0px 0px;left:0px;height:0px;background-color:white'>
  111 + </td>
  112 + </tr>
  113 + </table>
  114 +
  115 +<div id="i3GEOguiaMovel" style="visibility:hidden;position:absolute;display:block;border:0px solid white;text-align:left;z-index:2000;background-color:none">
  116 + <div style="cursor:pointer;position:absolute;top:50%;margin-top: -65px;width:30px;z-index:5000; left:18px;">
  117 + <img src='../../imagens/openbars1.png' style="width: 48px; position: absolute; left: -16px; height: 418px; top: -160px;">
  118 + <div id="iconeGuia_temas" ></div>
  119 + <div id="iconeGuia_adiciona" style="margin-top:3px;" ></div>
  120 + <div id="iconeGuia_legenda" style="margin-top:3px;"></div>
  121 + </div>
  122 +
  123 + <!--
  124 + <img id="i3GEOguiaMovelPuxador" onclick='i3GEO.guias.guiaMovel.abreFecha()' style='z-index:2;border:solid 0px white;left:0px;position:absolute;top:0px' width='0px' src='../../imagens/openbars.png' >
  125 + -->
  126 + <div id="i3GEOguiaMovelMolde" style="top:0px;box-shadow:0 2px 10px 0 #888888;border-radius:5px 0px 0px 5px;position:absolute;display:none;border:0px solid white;text-align:left;z-index:1000;background-color:gray">
  127 + <!--
  128 + <div id="i3GEOguiaMovelIcones" style='overflow:none;left:0px;display:none;position:absolute;top:0px;text-align:center;height:0px;width:0px;border:solid 0px white;background-color:white' ></div>
  129 + -->
  130 + <div id="i3GEOguiaMovelConteudo" style='top:10px;overflow:auto;display:none;position:absolute;border-color:gray;border-width:0px 0 0px 0px;left:0px;height:0px;background-color:white'>
124 131 <div id='guia1obj' style='display:none;' >
125 132 <!-- Esta div acrescenta a op&ccedil;&atilde;o de busca r&aacute;pida, caso vc queira coloc&aacute;-la em um lugar espec&iacute;fico -->
126   - <div style='left:5px;top:10px;' id=buscaRapida ></div>
  133 + <div style='left:5px;top:10px;width:150px;' id=buscaRapida ></div>
127 134 <!-- Esta div acrescenta a lista de propriedades do mapa -->
128 135 <div id=listaPropriedades style='top:15px;' ></div>
129 136 <!-- Esta div acrescenta a lista de de camadas do tipo 'baselayers' espec&iacute;ficas da interface Openlayers. Veja tamb&eacute;m a op&ccedil;&atilde;o i3GEO.Interface.openlayers.GADGETS.LayerSwitcher -->
... ... @@ -132,14 +139,14 @@ include_once(dirname(__FILE__).&quot;/../../ms_configura.php&quot;);
132 139 <div id=listaTemas style='top:15px;'></div>
133 140 </div>
134 141 <div id='guia2obj' style='display:none;'>Aguarde...<img alt="" src="../../imagens/branco.gif" width=248 /></div>
135   - <div id='guia4obj' style='display:none;text-align:left'><div id='legenda' style='text-align:left'></div></div>
  142 + <div id='guia4obj' style='display:none;text-align:left'><div id='legenda' style='text-align:left'></div>
  143 + <!--
136 144 <div id='guia5obj' style='display:none;text-align:left'><div id='banners' style='overflow:auto;text-align:left'>Aguarde...</div></div>
  145 + -->
137 146 </div>
138 147 </div>
139 148 </div>
140   -<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false&libraries=drawing "></script>
141   -<script type="text/javascript" src="../../classesjs/i3geo.js"></script>
142   -<script src="editorlimites_dependencias.php"></script>
  149 +</div>
143 150 <script type="text/javascript">
144 151 i3GEO.configura.locaplic = i3GEO.util.protocolo()+"://"+window.location.host+"/i3geo";
145 152 i3GEO.configura.mashuppar = "mapext=-76.5125927 -39.3925675209 -29.5851853 9.49014852081";
... ... @@ -147,28 +154,46 @@ i3GEO.Interface.ATUAL = &quot;googlemaps&quot;;
147 154 i3GEO.Interface.IDCORPO = "contemImg";
148 155 i3GEO.configura.diminuixN = 20;
149 156  
  157 +i3GEO.configura.autotamanho = false;
  158 +i3GEO.Interface.openlayers.TILES = true;
  159 +i3GEO.gadgets.PARAMETROS.mostraMenuSuspenso.finaliza = 'if($i("omenudataInterface1")){i3GEOoMenuBar.getMenuItem("omenudataInterface1").cfg.setProperty("text", " ");}';
150 160 i3GEO.cria();
151 161 i3GEO.configura.mapaRefDisplay = "none";
152 162 i3GEO.barraDeBotoes.TIPO = "olhodepeixe";
153   -i3GEO.barraDeBotoes.OFFSET = -10;
154   -i3GEO.barraDeBotoes.INCLUIBOTAO.barraedicao = false;
  163 +//ajusta o deslocamento da barra de botoes
  164 +i3GEO.barraDeBotoes.OFFSET = 11;
  165 +//ajusta a posicao da barra de botoes no IE
  166 +if(navm){
  167 + i3GEO.barraDeBotoes.OFFSET = 5;
  168 +}
  169 +if(chro){
  170 + i3GEO.barraDeBotoes.OFFSET = 15;
  171 +}
  172 +
155 173 i3GEO.configura.oMenuData["submenus"]["janelas"] = [];
156   -i3GEO.gadgets.PARAMETROS.mostraMenuSuspenso.permiteLogin = true;
  174 +i3GEO.ajuda.ATIVAJANELA = false;
157 175 i3GEO.idioma.IDSELETOR = "seletorIdiomas";
158   -i3GEO.Interface.ATIVAMENUCONTEXTO = true;
159   -i3GEO.arvoreDeTemas.TIPOBOTAO = "radio";
160   -
161   -i3GEO.arvoreDeTemas.OPCOESADICIONAIS.comentario = false;
162   -i3GEO.mapa.AUTORESIZE = true;
  176 +i3GEO.Interface.ATIVAMENUCONTEXTO = false;
  177 +//i3GEO.arvoreDeTemas.TIPOBOTAO = "radio";
  178 +i3GEO.arvoreDeTemas.OPCOESADICIONAIS.comentarios = true;
  179 +i3GEO.arvoreDeCamadas.VERIFICAABRANGENCIATEMAS = true;
163 180 i3GEO.arvoreDeCamadas.MOSTRALISTAKML = false;
  181 +i3GEO.mapa.AUTORESIZE = true;
164 182 i3GEO.guias.TIPO = "movel";
165   -i3GEO.guias.guiaMovel.config.topGuiaMovel = 0;
166   -i3GEO.ajuda.ATIVAJANELA = false;
  183 +i3GEO.guias.guiaMovel.config.topGuiaMovel = 36;
  184 +i3GEO.janela.ativaAlerta();
  185 +
  186 +//i3GEO.Interface.googlemaps.TIPOMAPA = "satellite";
  187 +
  188 +i3GEO.arvoreDeTemas.OPCOESADICIONAIS.navegacaoDir = true;
  189 +i3GEO.janela.TRANSICAOSUAVE = true;
  190 +
167 191 i3GEO.finaliza = function(){
168 192 if($i("i3GEOlogoMarca")){
169 193 $i("i3GEOlogoMarca").style.display = "none";
170 194 }
171   -}
  195 + i3GEO.mapa.insereDobraPagina("openlayers","../../imagens/dobraopenlayers.png");
  196 +};
172 197 i3GEO.finalizaAPI = function(){
173 198 var cabecalho, minimiza;
174 199 cabecalho = function() {
... ... @@ -183,10 +208,10 @@ i3GEO.finalizaAPI = function(){
183 208 i3GEO.editorGM.inicia("janelaEditorLimites_corpo");
184 209 i3GEOF.locregiao.iniciaJanelaFlutuante();
185 210 YAHOO.i3GEO.janela.manager.find("i3GEOF.locregiao").moveTo(100,40);
186   -}
187   -//a pagina nao e recarregada quando o usuario faz login
  211 +};
188 212 i3GEO.login.recarrega = false;
189 213 i3GEO.eventos.cliquePerm.ativo = false;
  214 +
190 215 i3GEO.inicia();
191 216 </script>
192 217 </body>
... ...
ferramentas/parametrossql/exec.php
... ... @@ -24,15 +24,21 @@ Aplica a substituicao de chaves pelos valores enviados
24 24 $layer->set("data",$data);
25 25 $layer->set("status",MS_DEFAULT);
26 26 $layer->setmetadata("PLUGINI3GEO","");
27   - if (connection_aborted()){exit();}
  27 + $layer->setmetadata("TEMA",$layer->getmetadata("TEMA")." - ".implode(",",$valores));
  28 + $layer->set("name","plugin".nomeRandomico());
  29 + if (connection_aborted()){
  30 + exit();
  31 + }
28 32 $salvo = $map->save($map_file);
29 33 $retorno = "ok";
30 34 break;
31 35 case "REMOVER":
32 36 $map = ms_newMapObj($map_file);
33   - $layer = $map->getlayerbyname($tema);
34   - $layer->set("status",MS_DELETE);
35   - $salvo = $map->save($map_file);
  37 + $layer = $map->getlayerbyname($tema);
  38 + if($layer != ""){
  39 + $layer->set("status",MS_DELETE);
  40 + $salvo = $map->save($map_file);
  41 + }
36 42 $retorno = "ok";
37 43 break;
38 44 }
... ...
ferramentas/parametrossql/index.js
... ... @@ -186,6 +186,7 @@ i3GEOF.parametrossql = {
186 186 valores.push(campos[i].value);
187 187 }
188 188 fim = function(){
  189 + i3GEO.janela.destroi("i3GEOF.parametrossql");
189 190 i3GEO.atualiza();
190 191 };
191 192 p = i3GEO.configura.locaplic+"/ferramentas/parametrossql/exec.php?g_sid="+i3GEO.configura.sid
... ...
interface/googlemapsdebug.phtml
... ... @@ -9,6 +9,7 @@ include_once(&quot;../ms_configura.php&quot;);
9 9 <title>i3GEO - Google Maps</title>
10 10 <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false&libraries=drawing,geometry"></script>
11 11 <script type="text/javascript" src="../classesjs/i3geonaocompacto.js"></script>
  12 + <script type="text/javascript" src="../classesjs/classe_editorgm.js"></script>
12 13 <link rel="stylesheet" type="text/css" href="../css/black.css">
13 14 </head>
14 15 <body id="i3geo" style='margin-left: 7px; background: white;'>
... ...