var map; var mapp; var mapa; var GDir1; var GDir2; var ROUTES = []; var GMAP_ROUTES = []; var POLYLINES = []; var listaDistancias = []; var normalProj; var waypoints = []; var gpolys = []; var routeNodes = []; var myNode; var newMarkers = []; var markerDragged; var isDragged; var lastIndex; var prevIndex; var num; var cleaned = false; var geocoder = null; var pointToRemove; var color = ["#0000FF","#8A2BE2","#A52A2A","#DEB887","#5F9EA0","#7FFF00", "#D2691E","#6495ED","#DC143C", "#00FFFF","#00008B","#008B8B","#B8860B","#A9A9A9","#006400"]; var pointInterval = 30; var markersClusterer = []; var markerClusterer; var styles = [[{ url: '../images/people35.png', height: 35, width: 35, opt_anchor: [16, 0], opt_textColor: '#FF00FF' }, { url: '../images/people45.png', height: 45, width: 45, opt_anchor: [24, 0], opt_textColor: '#FF0000' }, { url: '../images/people55.png', height: 55, width: 55, opt_anchor: [32, 0] }], [{ url: '../images/conv30.png', height: 27, width: 30, anchor: [3, 0], textColor: '#FF00FF' }, { url: '../images/conv40.png', height: 36, width: 40, opt_anchor: [6, 0], opt_textColor: '#FF0000' }, { url: '../images/conv50.png', width: 50, height: 45, opt_anchor: [8, 0] }], [{ url: '../images/heart30.png', height: 26, width: 30, opt_anchor: [4, 0], opt_textColor: '#FF00FF' }, { url: '../images/heart40.png', height: 35, width: 40, opt_anchor: [8, 0], opt_textColor: '#FF0000' }, { url: '../images/heart50.png', width: 50, height: 44, opt_anchor: [12, 0] }]]; function refreshMap() { if (markerClusterer != null) { markerClusterer.clearMarkers(); } var zoom = 14; //parseInt(document.getElementById("zoom").value, 10); var size = 40;//parseInt(document.getElementById("size").value, 10); var style = "-1";// document.getElementById("style").value; zoom = zoom == -1 ? null : zoom; size = size == -1 ? null : size; style = style == "-1" ? null: parseInt(style, 10); markerClusterer = new MarkerClusterer(map, markersClusterer, {maxZoom: zoom, gridSize: size, styles: styles[style]}); } function loadMaps() { if (document.getElementById("maparea")) { createEditablePolygon(); var pontos = document.getElementById('points').value; if(pontos){ var points = pontos.split('$*@'); for ( var j = 0; j < points.length; j++) { var p = points[j].split('#%'); var mark = createMarker(p[0], p[1], p[2], p[3], p[4], p[5], p[6],p[7], p[8], true); mapa.addOverlay(mark); } } } else if (document.getElementById("mapp")) { createMapPoints(); //showVehiclesOnMap(); } else if (document.getElementById("mapEditablePoint")) { createEditablePoint(); } } function calculateBoundsArea(){ var bounds = new GLatLngBounds(); var paths = polygon.getPaths(); var path; for (var p = 0; p < paths.getLength(); p++) { path = paths.getAt(p); for (var i = 0; i < path.getLength(); i++) { bounds.extend(path.getAt(i)); } } mapa.setCenter(bounds.getCenter(), mapa.getBoundsZoomLevel(bounds)); } function showPointsOnMap(){ map.clearOverlays(); createMapPoints(); var pontos = document.getElementById('points').value; var markers = new Array(); if(pontos){ var points = pontos.split('##$##'); for (var j = 0; j < points.length; j++) { var p = points[j].split('##'); if(p[0] && p[1]){ var marker = new GLatLng(p[0], p[1]); markers.push(marker); var markerPoint = createMarkerSimple(p[0], p[1], p[2]); map.addOverlay(markerPoint); } } } calculateBoundsRoute(markers); } function showVehiclesOnMap(){ alert('OK'); map.clearOverlays(); if(document.getElementById('pontosVeiculos')){ var pontos = document.getElementById('pontosVeiculos').value; var markers = new Array(); var param = 1; if(pontos){ var points = pontos.split('##$##'); for (var j = 0; j < points.length; j++) { var p = points[j].split('##'); if(p[0] && p[1]){ var marker = new GLatLng(p[0], p[1]); markers.push(marker); if(j == 0) { param = 2; } else { param = 1; }; var markerPoint = createMarker(p[0], p[1], p[2], p[3], p[4], p[5], p[6], p[7],p[8], p[9], false, param); map.addOverlay(markerPoint); } } } calculateBoundsRoute(markers); } } function initialize() { map = new google.maps.Map2(document.getElementById("mapp")); map.setCenter(new GLatLng(-3.7325370241018394, -38.51085662841797), 12); map.addControl(new GLargeMapControl()); var icon = new GIcon(G_DEFAULT_ICON); icon.image = "http://chart.apis.google.com/chart?cht=mm&chs=24x32&chco=FFFFFF,008CFF,000000&ext=.png"; var elem = document.getElementById('vehicleRoute').value; var points = elem.split('##$##'); var markers = new Array(); for (var j = 0; j < points.length; j++) { var p = points[j].split('##'); var marker2 = new GMarker(new GLatLng(p[0], p[1])); //var markerPoint = createMarker(p[0], p[1], p[2], p[3], p[4], p[5], p[6], p[7],p[8], p[9], false, param); markers.push(marker2); } markerClusterer = new MarkerClusterer(map, markers); } function clusterCurrentMarker(markers){ markerClusterer = new MarkerClusterer(map, markers, {maxZoom: 14, gridSize: 20, styles: styles["-1"]}); } function mostrarRotaVeiculo(){ map.clearOverlays(); createMapPoints(); var elem = document.getElementById('vehicleRoute').value; var points = elem.split('##$##'); var markers = new Array(); var polyline; var param = 1; for (var j = 0; j < points.length; j++) { var p = points[j].split('##'); if(p[0] && p[1]){ var marker = new GLatLng(p[0], p[1]); if(j == 0) { param = 2; } else { param = 1; }; var markerPoint = createMarker(p[0], p[1], p[2], p[3], p[4], p[5], p[6], p[7],p[8], p[9], false, param); markers.push(marker); map.addOverlay(markerPoint); } } polyline = new GPolyline(markers); map.addOverlay(polyline); calculateBoundsRoute(markers); } function clicked(overlay, latlng) { mapp.clearOverlays(); if (latlng) { geocoder.getLocations(latlng, function(addresses) { if(addresses.Status.code != 200) { alert("reverse geocoder failed to find an address for " + latlng.toUrlValue()); } else { address = addresses.Placemark[0]; var myHtml = address.address; //mapp.openInfoWindow(latlng, myHtml); mapp.setCenter(latlng, 15); var marker = new GMarker(latlng); mapp.addOverlay(marker); document.getElementById("lat").value = latlng.lat(); document.getElementById("lng").value = latlng.lng(); document.getElementById("descricaoPonto").value = myHtml; } }); } } function showAddress() { mapp.clearOverlays(); var address = document.getElementById('endereco').value; if (geocoder) { geocoder.getLatLng( address, function(point) { mapp.setCenter(point, 15); var marker = new GMarker(point); mapp.addOverlay(marker); document.getElementById("lat").value = point.lat(); document.getElementById("lng").value = point.lng(); } ); } } function getAddress(overlay, latlng) { if (latlng != null) { address = latlng; geocoder.getLocations(latlng, showAddress); } } function crossAddress(){ var geocoder = new google.maps.Geocoder(); var address = 'Fortaleza, BR'; if (geocoder) { geocoder.geocode({ 'address': address }, function (results, status) { if (status == google.maps.GeocoderStatus.OK) { console.log(results[0].geometry.location); }else { console.log("Geocoding failed: " + status); } }); } } /* */ function createMarker(lat, lng, modelo, placa, velocidade, odometro, ignicao, pprox, dist,dataHora, markerOption, param) { var markerIcon = createIcon(param); var markerOptions = { icon:markerIcon }; var marker; marker = new GMarker(new GLatLng(lat, lng), markerOptions); GEvent.addListener(marker, "click", function() { var html = "" + "" + "
Veiculo: " + modelo + "
Placa:" + placa + "
Ignição:" + ignicao + "
Odômetro:" + odometro.substring(0, odometro.length-2).replace(".", ",") + "
Velocidade: " + velocidade.substring(0, velocidade.length-2).replace(".", ",") + "(Km/h)"+ "
Ponto ref.:" + pprox + "
Dist. ref.:" + dist.substring(0, dist.length-2) + "(m)" + "
Data/Hora:" + dataHora + "


"; marker.openInfoWindowHtml(html); }); return marker; } function createMarkerSimple(lat, lng, desc) { var marker; marker = new GMarker(new GLatLng(lat, lng)); GEvent.addListener(marker, "click", function() { var html = "" + "" + "
" + modelo + "

"; marker.openInfoWindowHtml(html); }); return marker; } function createIcon(param) { var icon = new GIcon(); icon.image = "../images/cars/car"+ param +".png"; icon.iconSize = new GSize(20, 20); icon.iconAnchor = new GPoint(16, 16); icon.infoWindowAnchor = new GPoint(16, 16); return icon; } function createMapPoints(){ map = new google.maps.Map2(document.getElementById("mapp"), {draggableCursor:"crosshair"}); map.setCenter(new GLatLng(-3.7325370241018394, -38.51085662841797), 14); map.addControl(new GMapTypeControl()); map.addControl(new GSmallMapControl()); map.addControl(new GScaleControl()); map.disableDoubleClickZoom(); map.enableScrollWheelZoom(); map.enableContinuousZoom(); map.checkResize(); geocoder = new GClientGeocoder(); google.setOnLoadCallback(createMapPoints); } function createEditablePoint() { mapp = new google.maps.Map2(document.getElementById("mapEditablePoint"), {draggableCursor:"crosshair"}); mapp.addControl(new GMapTypeControl()); mapp.addControl(new GSmallMapControl()); geocoder = new GClientGeocoder(); mapp.disableDoubleClickZoom(); var lat = document.getElementById("lat"); var lng = document.getElementById("lng"); GEvent.addListener(mapp, "click", clicked); GEvent.addListener(mapp, "dblclick", function(overlay, point) { mapp.clearOverlays(); if(point) { pointToRemove = point; lat.value = point.lat(); lng.value = point.lng(); mapp.setCenter(new GLatLng(lat.value, lng.value), 15); mapp.addOverlay(new GMarker(new GLatLng(lat.value, lng.value))); } }); if (lat.value && lng.value) { mapp.setCenter(new GLatLng(lat.value, lng.value), 15); mapp.addOverlay(new GMarker(new GLatLng(lat.value, lng.value))); } else { mapp.setCenter(new GLatLng(-3.7325370241018394, -38.51085662841797), 13); } google.setOnLoadCallback(createEditablePoint); } function getCirclePoints(center, radius){ var circlePoints = Array(); var searchPoints = Array(); with (Math) { var rLat = (radius/3963.189) * (180/PI); // miles var rLng = rLat/cos(center.lat() * (PI/180)); for (var a = 0 ; a < 361 ; a++ ) { var aRad = a*(PI/180); var x = center.lng() + (rLng * cos(aRad)); var y = center.lat() + (rLat * sin(aRad)); var point = new GLatLng(parseFloat(y), parseFloat(x),true); circlePoints.push(point); if (a % pointInterval == 0) { searchPoints.push(point); } } } searchPolygon = new GPolygon(hcirclePoints, '#0000ff', 1, 1, '#0000ff', 0.2); map.addOverlay(searchPolygon); map.setCenter(searchPolygon.getBounds().getCenter(), map.getBoundsZoomLevel(searchPolygon.getBounds())); return searchPoints; } function createEditablePolygon() { mapa = new google.maps.Map2(document.getElementById("maparea")); mapa.addControl(new GMapTypeControl()); mapa.addControl(new GSmallMapControl()); mapa.disableDoubleClickZoom(); mapa.setCenter(new GLatLng(-3.7325370241018394, -38.51085662841797), 15); var polygon = null; var element = document.getElementById('polygon'); var points = Array(); if (element && element.value) { var coordinates = element.value.split(','); for (var i = 0; i < coordinates.length; i++) { var coordinate = coordinates[i].split(' '); var point = new GLatLng(parseFloat(coordinate[0]), parseFloat(coordinate[1]), true); points.push(point); } polygon = new GPolygon(points, '#A50E0C', 2, 0.7, '#A50E0C', 0.2); } else { polygon = new GPolygon([], '#A50E0C', 2, 0.7, '#A50E0C', 0.2); polygon.enableDrawing(); } polygon.enableEditing({onEvent: "mouseover"}); polygon.disableEditing({onEvent: "mouseout"}); GEvent.addListener(polygon, "click", function(latlng, index) { if (typeof index == "number") { polygon.deleteVertex(index); } }); GEvent.addListener(polygon, "endline", function() { polygon.setStrokeStyle({weight: 4}); }); GEvent.addListener(polygon, "lineupdated", function() { var element = document.getElementById('polygon'); var encode = ""; for (var i = 0; i < polygon.getVertexCount(); i++) { var p = polygon.getVertex(i); encode += p.lat() + " " + p.lng(); if (i != (polygon.getVertexCount() -1)) { encode += ","; } } element.value = encode; }); mapa.addOverlay(polygon); mapa.setCenter(polygon.getBounds().getCenter(), mapa.getBoundsZoomLevel(polygon.getBounds())); google.setOnLoadCallback(createEditablePolygon); } function setRoutesListDirections(list){ var d = new GDirections(); this.ROUTES.push(d); this.ROUTES[ROUTES.length - 1].loadFromWaypoints(list, {getPolyline:true, getSteps:true}); } function distancia(){ var poliline; var dist = 0; var soma = 0; var tempo = 0; var tempoTotal = 0; var trechos = []; var info = "Informacoes da Rota \r\n\r\n Distancias estimadas(em Km):\r\n\r\n"; for ( var j = 0; j < ROUTES.length; j++) { var poli = ROUTES[j].getPolyline(); if(poli){ for ( var k = 0; k < poli.getVertexCount(); k++) { trechos.push(poli.getVertex(k)); } poliline = new GPolyline(trechos, color[j], 3, 1); this.POLYLINES.push(poliline);polygon map.addOverlay(poliline); trechos = []; } } var sumary; for (var p = 0; p < ROUTES.length; p++) { if(ROUTES[p].getDistance() && ROUTES[p].getDuration()){ dist = ROUTES[p].getDistance().meters; tempo = ROUTES[p].getDuration().seconds/3600; dist = dist/1000; soma += dist; tempoTotal += tempo; sumary += ROUTES[p].getSummaryHtml() + "\r\n"; } } //document.getElementById("distanciaTempo").innerHTML = "Distancia estimada: "+ soma.toString().substring(0,5) +" Km // Tempo aproximado: "+ Math.floor(tempoTotal) +" h " + Math.floor((tempoTotal - Math.floor(tempoTotal))*60) + " min" ; } function calculateBoundsRoute(){ if(markerRoute){ if (markerRoute.length > 0) { var mbr = new GLatLngBounds(); for(var i = 0; i < markerRoute.length; i++) { mbr.extend(markerRoute[i]); } map.setCenter(mbr.getCenter(), map.getBoundsZoomLevel(mbr)); } } } function calculateBoundsRoute(markers){ if(markers){ if (markers.length > 0) { var mbr = new GLatLngBounds(); for(var i = 0; i < markers.length; i++) { mbr.extend(markers[i]); } map.setCenter(mbr.getCenter(), map.getBoundsZoomLevel(mbr)); } } } function clearCurrenteRoute2(){ for ( var j = 0; j < POLYLINES.length; j++) { map.removeOverlay(POLYLINES[j]); } POLYLINES = []; } function clearCurrenteRoute(){ for ( var k = 0; k < this.gpolys.length; k++) { map.removeOverlay(this.gpolys[k]); } for ( var k = 0; k < this.waypoints.length; k++) { map.removeOverlay(this.waypoints[k]); } this.waypoints = new Array; this.gpolys = new Array; this.routeNodes = new Array; this.isDragged = 1; clearCurrenteRoute2(); } function createMonitoringMap(){ map = new google.maps.Map2(document.getElementById("map"), {draggableCursor:"crosshair"}); map.setCenter(new GLatLng(-3.7325370241018394, -38.51085662841797), 12); map.addControl(new GMapTypeControl()); map.addControl(new GSmallMapControl()); map.addControl(new GScaleControl()); //map.addMapType(G_SATELLITE_3D_MAP); normalProj = G_NORMAL_MAP.getProjection(); map.disableDoubleClickZoom(); map.enableScrollWheelZoom(); map.enableContinuousZoom(); GDir1 = new GDirections(); GDir2 = new GDirections(); GEvent.addListener(map, 'load', setRoutesListDirections); GEvent.addListener(map, 'mousemove', getProximity); GEvent.addListener(map, "zoomend", function() { routeNodes = new Array(); }); GEvent.addListener(map, "click", function(overlay, point) { if (point) { if (waypoints.length == 0) { GDir1.loadFromWaypoints([point.toUrlValue(6), point.toUrlValue(6)], {getPolyline:true}); } else { GDir1.loadFromWaypoints([waypoints[waypoints.length-1].getPoint(), point.toUrlValue(6)], {getPolyline:true}); } } }); iconNode = new GIcon(); iconNode.image = "../images/node.gif"; iconNode.shadow = ''; iconNode.iconSize = new GSize(10,10); iconNode.shadowSize = new GSize(0,0); iconNode.iconAnchor = new GPoint(5,5); iconNode.infoWindowAnchor = new GPoint(5,5); iconNode.dragCrossImage = '../images/empty.gif'; iconNode.dragCrossSize = GSize(1, 1); iconNode.maxHeight = 1; myNode = new GMarker(map.getCenter(), {icon:iconNode, draggable:true, bouncy:false, zIndexProcess:function(marker,b) {return 1;}}); map.addOverlay(myNode); myNode.show(); myNode.hide(); GEvent.addListener(myNode, "drag", function() { myNode.show(); if (isDragged == 2) { markerDragged = myNode; return; } if (myNode.MyIndex < waypoints.length) { isDragged = 2; markerDragged = false; lastIndex = myNode.MyIndex; prevIndex = -1; GDir2.loadFromWaypoints([waypoints[lastIndex].getPoint(), myNode.getPoint().toUrlValue(6), waypoints[lastIndex + 1].getPoint()], {getPolyline:true}); } }); GEvent.addListener(myNode, "dragend", function() { var point = myNode.getPoint(); var marker = new GMarker(point, {icon:iconNode, draggable:true, dragCrossMove:false, bouncy:false, zIndexProcess:function(marker,b) {return 1;}}); waypoints.splice(myNode.MyIndex + 1, 0, marker); for (var i = myNode.MyIndex; i < waypoints.length; i++){ waypoints[i].MyIndex = i; } var dummy = new GPolyline([point]); map.addOverlay(dummy); gpolys.splice(myNode.MyIndex + 1, 0, dummy); GEvent.addListener(marker, "dragstart", function() { isDragged = 1; myNode.hide(); }); GEvent.addListener(marker, "dragend", function() { isDragged = 0; } ); GEvent.addListener(marker, "drag", dragMarker); map.addOverlay(marker); if (myNode.MyIndex < waypoints.length) { lastIndex = myNode.MyIndex + 1; prevIndex = lastIndex - 1; GDir2.loadFromWaypoints([waypoints[lastIndex - 1].getPoint(),point.toUrlValue(6), waypoints[lastIndex + 1].getPoint()], {getPolyline:true}); } }); GEvent.addListener(GDir1, "load", function() { var gp = GDir1.getPolyline(); var point = gp.getVertex(gp.getVertexCount() - 1); var marker = new GMarker(point, {icon:iconNode, draggable:true, dragCrossMove:false, bouncy:false, zIndexProcess:function(marker,b) {return 1;}}); if (waypoints.length == 0) { marker.title = GDir1.getRoute(0).getStartGeocode().address; } else { waypoints[waypoints.length-1].title = GDir1.getRoute(0).getStartGeocode().address; marker.title = GDir1.getRoute(0).getEndGeocode().address } GEvent.addListener(marker, "dragstart", function() { isDragged = 1; myNode.hide(); }); GEvent.addListener(marker, "drag", dragMarker); GEvent.addListener(marker, "dragend", function() { isDragged = 0; }); marker.MyIndex = waypoints.length; waypoints.push(marker); map.addOverlay(marker); if (waypoints.length > 1) { map.addOverlay(gp); gpolys.push(gp); routeNodes = []; getProximity(); } }); GEvent.addListener(GDir2, "load", function() { var gp = GDir2.getPolyline(); map.removeOverlay(gpolys[lastIndex]); if (prevIndex >= 0) { map.removeOverlay(gpolys[lastIndex-1]); var minD, minI, points=[]; var p0 = waypoints[lastIndex].getPoint(); for (var i = 0; i < gp.getVertexCount(); i++) { var p = gp.getVertex(i); points.push(p); var d = p0.distanceFrom(p); if (i == 0 || minD > d) { minD = d; minI = i; } } gpolys[lastIndex - 1] = new GPolyline(points.slice(0, minI + 1)); gpolys[lastIndex] = new GPolyline(points.slice(minI, points.length)); map.addOverlay(gpolys[lastIndex - 1]); waypoints[lastIndex-1].title = GDir2.getRoute(0).getStartGeocode().address; waypoints[lastIndex].title = GDir2.getRoute(0).getEndGeocode().address; waypoints[lastIndex+1].title = GDir2.getRoute(1).getEndGeocode().address; } else { gpolys[lastIndex] = gp; waypoints[lastIndex].title = GDir2.getRoute(0).getStartGeocode().address; waypoints[lastIndex+1].title = GDir2.getRoute(0).getEndGeocode().address; } map.addOverlay(gpolys[lastIndex]); routeNodes = []; getProximity(); isDragged = 0; if (markerDragged) { isDragged = 1; GEvent.trigger(markerDragged, 'drag'); } }); map.checkResize(); google.setOnLoadCallback(createMonitoringMap); // try { // if (initWikiCrimes) { // initWikiCrimes(map,jQuery); // } // } catch (e) {} } function dragMarker() { if (isDragged == 2) { markerDragged = this; return; } isDragged = 2; if (markerDragged) { marker = markerDragged; markerDragged = false; } else { marker = this; } lastIndex = marker.MyIndex; var point = marker.getPoint(); if (lastIndex > 0) { if (lastIndex < waypoints.length - 1) { prevIndex = lastIndex - 1; GDir2.loadFromWaypoints([waypoints[lastIndex - 1].getPoint(), point.toUrlValue(6), waypoints[lastIndex + 1].getPoint()],{getPolyline:true}); } else { prevIndex = -1; lastIndex = lastIndex - 1; GDir2.loadFromWaypoints([waypoints[lastIndex].getPoint(),point.toUrlValue(6)],{getPolyline:true}); } } else if (waypoints.length > 1) { prevIndex = -1; GDir2.loadFromWaypoints([point.toUrlValue(6),waypoints[1].getPoint()],{getPolyline:true}); } } function getProximity(mouseLatLng, marker) { var dist, zoom; if (routeNodes.length == 0) { dist = 0; zoom = map.getZoom(); if (gpolys.length > 0 && gpolys[0].getVertexCount() > 0 ) routeNodes.push(normalProj.fromLatLngToPixel(gpolys[0].getVertex(0), zoom)); for (var i = 0; i < gpolys.length; i++) { dist += gpolys[i].getLength(); for (var j = 1; j < gpolys[i].getVertexCount(); j++) { var point = normalProj.fromLatLngToPixel(gpolys[i].getVertex(j), zoom) point.MyIndex = i; routeNodes.push(point); } } var panel = document.getElementById('panel'); if (panel) { panel.innerHTML = (dist/1000).toFixed(1) + " km"; } } if (!mouseLatLng || routeNodes.length <= 1 || isDragged > 0){ return; } zoom = map.getZoom(); var mousePx = normalProj.fromLatLngToPixel(mouseLatLng, zoom); var minDist = 999; var minX = mousePx.x; var minY = mousePx.y; if (routeNodes.length > 1) { var x,y, d1,d2,d; var dx = mousePx.x - routeNodes[0].x; var dy = mousePx.y - routeNodes[0].y; d2 = dx*dx + dy*dy; for (var n = 0 ; ++n < routeNodes.length; ) { d1 = d2; x = routeNodes[n].x; dx = mousePx.x - x; y = routeNodes[n].y; dy = mousePx.y - y; d2 = dx*dx + dy*dy; dx = x - routeNodes[n-1].x; dy = y - routeNodes[n-1].y; d = dx*dx + dy*dy; var u = ((mousePx.x - x) * dx + (mousePx.y - y) * dy) / d; x += (u*dx); y += (u*dy); dx = mousePx.x - x; dy = mousePx.y - y; dist = dx*dx + dy*dy; if ((d1 - dist) + (d2 - dist) > d) { if (d1 < d2) { dist = d1; x = routeNodes[n-1].x; y = routeNodes[n-1].y; } else { dist = d2; x = routeNodes[n].x; y = routeNodes[n].y; } }; if (minDist > dist) { minDist = dist; minX = x; minY = y; myNode.MyIndex = routeNodes[n].MyIndex; } }var mbr = new GLatLngBounds(); for(var i = 0; i < markerRoute.length; i++) { mbr.extend(markerRoute[i]); } map.setCenter(mbr.getCenter(), map.getBoundsZoomLevel(mbr)); if (minDist > 25) { myNode.hide(); } else { for (n = waypoints.length; --n >= 0;) { var markerPx = normalProj.fromLatLngToPixel(waypoints[n].getPoint(), zoom); dx = markerPx.x - minX; dy = markerPx.y - minY; if (dx*dx + dy*dy < 25) { myNode.hide(); return; } } myNode.setPoint(normalProj.fromPixelToLatLng(new GPoint(minX, minY), zoom)); myNode.show(); } } } function createEditablePoint23() { mapp = new google.maps.Map2(document.getElementById("mapponto")); mapp.addControl(new GMapTypeControl()); mapp.addControl(new GSmallMapControl()); geocoder = new GClientGeocoder(); mapp.disableDoubleClickZoom(); var lat = document.getElementById("lat"); var lng = document.getElementById("lng"); GEvent.addListener(mapp, "click", function(overlay, point) { mapp.clearOverlays(); if(point) { pointToRemove = point; lat.value = point.lat(); lng.value = point.lng(); mapp.setCenter(new GLatLng(lat.value, lng.value), 15); mapp.addOverlay(new GMarker(new GLatLng(lat.value, lng.value))); } }); if (lat.value && lng.value) { mapp.setCenter(new GLatLng(lat.value, lng.value), 15); mapp.addOverlay(new GMarker(new GLatLng(lat.value, lng.value))); } else { mapp.setCenter(new GLatLng(-3.7325370241018394, -38.51085662841797), 13); } google.setOnLoadCallback(createEddocument.getElementById('points').valueitablePoint); } function openKML( url ) { if (GBrowserIsCompatible()) { var geoXml = new GGeoXml( url ); kmlMap = new google.maps.Map2(document.getElementById('kml_map')); kmlMap.setCenter(new GLatLng(-3.7325370241018394, -38.51085662841797), 13); kmlMap.addControl(GSmallMapControl); kmlMap.addControl(GMapTypeControl); kmlMap.addOverlay(geoXml); } else { window.alert('Navegador não compatível com o Google Maps.\nFavor instalar uma versão mais recente\nou utilizar outro navegador.'); } }