Files
SIG/GPS/PuntosDeInteres.aspx

761 lines
41 KiB
Plaintext

<%@ Page Title="" Language="VB" MasterPageFile="~/SiteGPS.master" AutoEventWireup="false" CodeFile="PuntosDeInteres.aspx.vb" Inherits="GPS_PuntosDeInteres" %>
<asp:Content ID="Content1" ContentPlaceHolderID="CP" runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="Css" runat="Server">
<link href="../Metronic/assets/layouts/layout3/css/jquery.datetimepicker.css" rel="stylesheet" />
<style type="text/css">
html, body {
width: 100%;
height: 100%;
margin: 0;
padding: 0;
}
#map {
position: fixed !important;
width: 100%;
height: calc(100% - 51px);
margin: 0;
padding: 0;
}
.pac-container.pac-logo {
z-index: 100000;
}
.controls {
margin-top: 10px;
border: 1px solid transparent;
border-radius: 2px 0 0 2px;
box-sizing: border-box;
-moz-box-sizing: border-box;
height: 32px;
outline: none;
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3);
}
#pac-input {
background-color: #fff;
font-family: 'Open Sans Condensed', sans-serif;
font-size: 13px;
font-weight: 300;
margin-left: 12px;
padding: 0 11px 0 13px;
text-overflow: ellipsis;
width: 300px;
}
#pac-input:focus {
border-color: #4d90fe;
}
#iw-container {
margin-bottom: 10px;
}
</style>
</asp:Content>
<asp:Content ContentPlaceHolderID="H" ID="Content9" runat="server">
<li>
<asp:LinkButton ID="BtnCrear" OnClientClick="CargaDivs('Point');return false;" Text="<i class='fa fa-map-marker'></i><span>Crear punto(s) de Interés</span>" runat="server">
</asp:LinkButton>
</li>
<li>
<asp:LinkButton ID="BtnCrearGrupo" OnClientClick="CargaDivs('PointGroup');return false;" Text="<i class='fa fa-users'></i><span>Crear un grupo de puntos</span>" runat="server">
</asp:LinkButton>
</li>
<li>
<asp:LinkButton OnClientClick="CargaDivs('Route');return false;" Text="<i class='fa fa-location-arrow'></i><span>Calcular ruta entre puntos</span>" runat="server">
</asp:LinkButton>
</li>
<li>
<asp:LinkButton OnClientClick="CargaDivs('GroupRoute');return false;" Text="<i class='fa fa-arrows-h'></i><span>Calcular ruta para grupo de puntos</span>" runat="server">
</asp:LinkButton>
</li>
<li>
<asp:LinkButton ID="BtnEditar" OnClientClick="CargaDivs('Edit');return false;" Text="<i class='fa fa-pencil' aria-hidden='true'></i><span>Editar punto(s) de interés</span>" runat="server">
</asp:LinkButton>
</li>
<%--<li>
<asp:LinkButton Text="<i class='fa fa-calculator'></i><span>Calcular distancia entre puntos</span>" runat="server"></asp:LinkButton>
</li>--%>
</asp:Content>
<asp:Content ID="Content7" ContentPlaceHolderID="C" runat="Server">
<asp:UpdatePanel runat="server" UpdateMode="conditional">
<ContentTemplate>
<asp:HiddenField ID="HdnTipo" runat="server" ClientIDMode="Static" />
<asp:HiddenField ID="CommandArg" runat="server" ClientIDMode="Static" />
<asp:HiddenField ID="Points" runat="server" ClientIDMode="Static" />
<asp:HiddenField ID="HdnGrupo" runat="server" Value="-1" ClientIDMode="Static" />
</ContentTemplate>
</asp:UpdatePanel>
<input id="pac-input" class="controls" type="text" placeholder="Buscar Dirección">
<div id="map"></div>
<div id="dvEditar" class="modal ADS fade" role="dialog">
<div class="modal-dialog">
<asp:UpdatePanel ID="UpEditar" class="modal-content rowpadding" tabindex="-1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
<h4 class="modal-title" id="H2" runat="server">Editar/Eliminar Puntos</h4>
</div>
<div class="modal-body">
<div class="row" style="margin-left: 0px; margin-top: 5px; margin-bottom: 5px; text-align: right" align="left">
<div style="margin-right: 15px">
<input type="text" id="TxtBuscar" class="form-control input-sm" onkeyup="<%= String.Format("FiltrarTabla('TxtBusquedaEventos','{0}')", GvPuntos.ClientID) %>" style="display: inline-block; margin-right: -20px; width: 150px;" />
<a href="javascript:;" onclick="<%= String.Format("FiltrarTabla('TxtBusquedaEventos','{0}')", GvPuntos.ClientID) %>" style="margin-top: -3px;" class="btn btn-circle btn-sm label-info"><i class="icon-magnifier"></i></a>
</div>
</div>
<asp:GridView ID="GVPuntosInteres" runat="server" GridLines="None" DataKeyNames="Punto,PuntoDeInteres,Descripcion,CvePuntoDeInteres,CvePuntoDeInteresGrupo, Estatus" CssClass="table table-striped table-advance table-hover Widthall ScrollAD" data-height="150" data-sort="true" BorderWidth="1" BorderColor="#D3D3D3" CellSpacing="0" Width="100%" AutoGenerateColumns="False" EmptyDataText="No se encontraron registros">
<Columns>
<asp:TemplateField ItemStyle-HorizontalAlign="center" ItemStyle-Width="10%">
<ItemTemplate>
<asp:CheckBox runat="server" ID="chkGR" />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="PuntoDeInteres" ItemStyle-Width="30%" HeaderText="PuntoDeInteres" ItemStyle-HorizontalAlign="Left" />
<asp:BoundField DataField="Descripcion" ItemStyle-Width="30%" HeaderText="Descripcion" ItemStyle-HorizontalAlign="Left" />
<asp:TemplateField HeaderText="Editar" ItemStyle-Width="10%" ItemStyle-HorizontalAlign="Right">
<ItemTemplate>
<asp:LinkButton ID="imgE" runat="server" AlternateText="Editar" OnClick="imgE_Click" CausesValidation="False" CssClass="btn btn-circle btn-sm green" Text="<i class='fa fa-pencil'></i>" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField ItemStyle-Width="10%" HeaderText="Eliminar" ItemStyle-HorizontalAlign="Left">
<ItemTemplate>
<asp:LinkButton ID="imgD" ItemStyle-Width="5%" runat="server" AlternateText="Eliminar" CausesValidation="False" CommandName="Delete" CssClass="btn btn-circle btn-sm red" Text="<i class='icon-trash'></i>" data-toggle="confirmation" data-popout="true" data-original-title="Confirmar" data-btn-ok-label="si" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
<div class="modal-footer">
<asp:LinkButton ID="LBMostrar" runat="server" Text="Mostrar en mapa" CssClass="btn btn-primary"></asp:LinkButton>
<button data-dismiss="modal" class="btn btn-default">Cancelar</button>
</div>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</div>
<div id="divAgregarTipo" class="modal ADS fade" role="dialog">
<div class="modal-dialog">
<asp:UpdatePanel ID="UpAgregar" class="modal-content rowpadding" tabindex="-1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
<h4 class="modal-title" id="myModalLabel">Agregar Punto(s) de interés</h4>
</div>
<div class="modal-body">
<asp:UpdatePanel ID="UpBodyTipoEquipo" UpdateMode="Conditional" runat="server">
<ContentTemplate>
<div id="dvAdd">
<div class="form-group form-md-line-input input-iconright">
<asp:TextBox ID="TxtNombre" runat="server" CssClass="form-control" CausesValidation="true"></asp:TextBox>
<asp:RequiredFieldValidator ID="RFVEstatusOS" runat="server" CssClass="help-block errorimput" ControlToValidate="TxtNombre" ErrorMessage="<b><span style='text-decoration: underline'>ERROR:</span></b><br />El campo <b>''Nombre''</b> es necesario, por favor ingréselo." ValidationGroup="GrpObligatorio"></asp:RequiredFieldValidator>
<label id="lblPuntos" for="<%= TxtNombre.ClientID.ToString()%>">Nombre Punto(s) De Interés:</label>
</div>
<div class="form-group form-md-line-input input-iconright" style="width: 80%; margin-bottom: 20px;">
<asp:TextBox ID="TxtDescripcion" runat="server" CssClass="form-control" CausesValidation="true"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" CssClass="help-block errorimput" ControlToValidate="TxtDescripcion" ErrorMessage="<b><span style='text-decoration: underline'>ERROR:</span></b><br />El campo <b>''Descripcion''</b> es necesario, por favor ingréselo." ValidationGroup="GrpObligatorio"></asp:RequiredFieldValidator>
<label for="<%= TxtDescripcion.ClientID.ToString()%>">Descripción:</label>
</div>
</div>
<div id="dvEstatus" style="display:none" runat="server" class="form-group form-md-line-input input-iconright">
<label>Activo: </label>
<br />
<asp:Checkbox ID="chkEstatus" Text=" " runat="server" CssClass="chksino" Width="250px">
</asp:Checkbox>
</div>
<div id="dvEventos" runat="server" style="display: none">
<div class="row" style="margin-left: 0px; margin-top: 5px; margin-bottom: 5px; text-align: right" align="left">
<div style="margin-right: 15px">
<input type="text" id="TxtGVGrupo" class="form-control input-sm" onkeyup="<%= String.Format("FiltrarTabla('TxtGVGrupo','{0}')", GvGrupos.ClientID) %>" style="display: inline-block; margin-right: -20px; width: 150px;" />
<a href="javascript:;" onclick="<%= String.Format("FiltrarTabla('TxtGVGrupo','{0}')", GvGrupos.ClientID) %>" style="margin-top: -3px;" class="btn btn-circle btn-sm label-info"><i class="icon-magnifier"></i></a>
</div>
</div>
<asp:GridView ID="GvGrupos" runat="server" GridLines="None" DataKeyNames="CvePuntoDeInteresGrupo,PuntoDeInteresGrupo,Descripcion" CssClass="table table-striped table-advance table-hover Widthall ScrollAD" data-height="150" BorderWidth="1" BorderColor="#D3D3D3" CellSpacing="0" Width="100%" AutoGenerateColumns="False" EmptyDataText="No se encontraron registros">
<Columns>
<asp:BoundField DataField="PuntoDeInteresGrupo" ItemStyle-Width="45%" HeaderText="Agregar a Grupo" ItemStyle-HorizontalAlign="Left" />
<asp:BoundField DataField="Descripcion" ItemStyle-Width="45%" HeaderText="Descripcion" ItemStyle-HorizontalAlign="Left" />
</Columns>
</asp:GridView>
</div>
</ContentTemplate>
</asp:UpdatePanel>
<div class="modal-footer">
<asp:UpdatePanel ID="UpFooter" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:LinkButton ID="BtnAgregarPunto" runat="server" CssClass="btn btn-primary" ValidationGroup="GrpObligatorio"> <i class='material-icons'>done_all</i> Agregar</asp:LinkButton>
<button id="btnCancelarTE" class="btn btn-default" data-dismiss="modal" value="Cancelar">Cancelar </button>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</div>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</div>
<%-- <div id="divAgregarGeoreferencia" class="modal ADS fade" role="dialog">
<div class="modal-dialog">
<asp:UpdatePanel ID="UpdatePanel1" class="modal-content rowpadding" tabindex="-1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
<h4 class="modal-title" id="myModalLabel2">Agregar Punto(s) De Interes</h4>
</div>
<div class="modal-body">
<asp:UpdatePanel ID="UpdatePanel2" UpdateMode="Conditional" runat="server">
<ContentTemplate>
<div class="form-group form-md-line-input input-iconright">
<asp:TextBox ID="TxtNomRuta" runat="server" CssClass="form-control" CausesValidation="true"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" CssClass="help-block errorimput" ControlToValidate="TxtNomRuta" ErrorMessage="<b><span style='text-decoration: underline'>ERROR:</span></b><br />El campo <b>''Nombre''</b> es necesario, por favor ingréselo." ValidationGroup="GrpAddRuta"></asp:RequiredFieldValidator>
<label for="<%= TxtNomRuta.ClientID.ToString()%>">Nombre GeoReferencia:</label>
</div>
<div class="form-group form-md-line-input input-iconright">
<asp:TextBox ID="TxtTolerancia" runat="server" Style="width: 50%; display: inline-block" CssClass="form-control" CausesValidation="true"></asp:TextBox><asp:Literal runat="server" Text="mts"></asp:Literal>
<asp:RequiredFieldValidator ID="RFVTxtTolerancia" runat="server" CssClass="help-block errorimput" ControlToValidate="TxtTolerancia" ErrorMessage="<b><span style='text-decoration: underline'>ERROR:</span></b><br />El campo <b>''Tolerancia''</b> es necesario, por favor ingréselo." ValidationGroup="GrpAddRuta"></asp:RequiredFieldValidator>
<ajax:FilteredTextBoxExtender ID="FTBSerie" runat="server" TargetControlID="TxtTolerancia" FilterType="Numbers" />
<label for="<%= TxtTolerancia.ClientID.ToString()%>" style="width: 50%">Tolerancia:</label>
</div>
<ul class="list-inline" style="font-size: 12px; margin-top: 15px; margin-left: 0px;">
<li>Fecha I.:
<div class="input-group input-sm date date-picker " data-date-format="dd/mm/yyyy" style="display: inline-block;">
<asp:TextBox ID="txtFechaI" runat="server" CssClass="form-control input-sm" CausesValidation="true" MaxLength="10" Width="82px "></asp:TextBox>
<span class="input-group-btn ">
<asp:LinkButton ID="imgCalendario" class="btn default " Text="<i class='fa fa-calendar'></i>" runat="server"></asp:LinkButton>
</span>
</div>
<ajax:MaskedEditExtender ID="MEEFechaI" runat="server" TargetControlID="txtFechaI" Mask="99/99/9999" MaskType="Date" DisplayMoney="Left" AcceptNegative="Left"></ajax:MaskedEditExtender>
<ajax:CalendarExtender runat="server" ID="Calendario" TargetControlID="txtFechaI" PopupButtonID="ImgCalendario" PopupPosition="BottomRight" Enabled="True"></ajax:CalendarExtender>
<asp:CompareValidator ID="cvFechaI" runat="server" ControlToValidate="txtFechaI" Display="None" ErrorMessage="El campo <b>''Fecha Inicial''</b> no tienes el formato correcto, por favor intente de nuevo con el siguiente formato: (dd/mm/yyyy)." Operator="DataTypeCheck" Type="Date" ValidationGroup="GrpAddRuta"></asp:CompareValidator>
<ajax:ValidatorCalloutExtender ID="vcoCvFI" runat="server" HighlightCssClass="vco" TargetControlID="cvFechaI" Width="350px"></ajax:ValidatorCalloutExtender>
</li>
<li>Fecha F.:
<div class="input-group input-sm date date-picker " data-date-format="dd/mm/yyyy" style="display: inline-block;">
<asp:TextBox ID="txtFechaF" runat="server" CssClass="form-control input-sm" CausesValidation="true" MaxLength="10" Width="82px "></asp:TextBox>
<span class="input-group-btn ">
<asp:LinkButton ID="imgCalendarioF" class="btn default " Text="<i class='fa fa-calendar'></i>" runat="server"></asp:LinkButton>
</span>
</div>
<ajax:MaskedEditExtender ID="MEEFechaF" runat="server" TargetControlID="txtFechaF" Mask="99/99/9999" MaskType="Date" DisplayMoney="Left" AcceptNegative="Left"></ajax:MaskedEditExtender>
<ajax:CalendarExtender runat="server" ID="Calendario2" TargetControlID="txtFechaF" PopupButtonID="imgCalendarioF" PopupPosition="BottomRight" Enabled="True"></ajax:CalendarExtender>
<asp:CompareValidator ID="cvFechaF" runat="server" ControlToValidate="txtFechaF" Display="None" ErrorMessage="El campo <b>''Fecha Final''</b> no tienes el formato correcto, por favor intente de nuevo con el siguiente formato: (dd/mm/yyyy)." Operator="DataTypeCheck" Type="Date" ValidationGroup="GrpAddRuta"></asp:CompareValidator>
<ajax:ValidatorCalloutExtender ID="vcoCvFF" runat="server" HighlightCssClass="vco" TargetControlID="cvFechaF" Width="350px"></ajax:ValidatorCalloutExtender>
</li>
</ul>
<ul class="list-inline" style="font-size: 12px; margin-top: 15px; margin-left: 0px;">
<li>Aplica Días:
</li>
<li>
<asp:CheckBox runat="server" Text="L" ID="chkLunes" />
</li>
<li>
<asp:CheckBox runat="server" Text="M" ID="chkMartes" />
</li>
<li>
<asp:CheckBox runat="server" Text="M" ID="chkMiercoles" />
</li>
<li>
<asp:CheckBox runat="server" Text="J" ID="chkJueves" />
</li>
<li>
<asp:CheckBox runat="server" Text="V" ID="chkViernes" />
</li>
<li>
<asp:CheckBox runat="server" Text="S" ID="chkSabado" />
</li>
<li>
<asp:CheckBox runat="server" Text="D" ID="chkDomingo" />
</li>
</ul>
<div class="row" style="margin-top: 10px; margin-bottom: 20px;">
<div class="col-md-1">Hora Inicio:</div>
<div class="col-md-2">
<div class="input-group input-sm date date-picker " data-date-format="dd/mm/yyyy hh:mm" style="display: inline-block;">
<asp:TextBox ID="TxtHoraI" runat="server" CssClass="form-control input-sm hora" CausesValidation="true" MaxLength="18" Width="75px"></asp:TextBox>
</div>
</div>
<div class="col-md-1">Hora Fin:</div>
<div class="col-md-2">
<div class="input-group input-sm date date-picker " data-date-format="dd/mm/yyyy" style="display: inline-block;">
<asp:TextBox ID="TxtHoraF" runat="server" CssClass="form-control input-sm hora" CausesValidation="true" MaxLength="18" Width="75px "></asp:TextBox>
</div>
</div>
</div>
</ContentTemplate>
</asp:UpdatePanel>
<div class="modal-footer">
<asp:UpdatePanel ID="UpdatePanel3" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:LinkButton ID="BtnAgregarRuta" runat="server" CssClass="btn btn-primary" ValidationGroup="GrpAddRuta"> <i class='material-icons'>done_all</i> Agregar</asp:LinkButton>
<button class="btn btn-default" data-dismiss="modal" value="Cancelar">Cancelar </button>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</div>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</div>--%>
<div id="dvConsulta" class="modal ADS fade" role="dialog">
<div class="modal-dialog">
<asp:UpdatePanel ID="UPConsulta" class="modal-content rowpadding" tabindex="-1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
<h4 class="modal-title" id="H1" runat="server">Calcular Ruta Óptima entre puntos</h4>
</div>
<div class="modal-body">
<div class="row" style="margin-left: 0px; margin-top: 5px; margin-bottom: 5px; text-align: right" align="left">
<div style="margin-right: 15px">
<input type="text" id="TxtBusquedaEventos" class="form-control input-sm" onkeyup="<%= String.Format("FiltrarTabla('TxtBusquedaEventos','{0}')", GvPuntos.ClientID) %>" style="display: inline-block; margin-right: -20px; width: 150px;" />
<a href="javascript:;" onclick="<%= String.Format("FiltrarTabla('TxtBusquedaEventos','{0}')", GvPuntos.ClientID) %>" style="margin-top: -3px;" class="btn btn-circle btn-sm label-info"><i class="icon-magnifier"></i></a>
</div>
</div>
<asp:GridView ID="GvPuntos" runat="server" GridLines="None" DataKeyNames="Punto,PuntoDeInteres,CvePuntoDeInteres" CssClass="table table-striped table-advance table-hover Widthall ScrollAD" data-height="150" data-sort="true" BorderWidth="1" BorderColor="#D3D3D3" CellSpacing="0" Width="100%" AutoGenerateColumns="False" EmptyDataText="No se encontraron registros">
<Columns>
<asp:TemplateField ItemStyle-HorizontalAlign="center" ItemStyle-Width="10%">
<ItemTemplate>
<asp:CheckBox runat="server" ID="chkGR" />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="PuntoDeInteres" ItemStyle-Width="20%" HeaderText="PuntoDeInteres" ItemStyle-HorizontalAlign="Left" />
<asp:BoundField DataField="Descripcion" ItemStyle-Width="20%" HeaderText="Descripcion" ItemStyle-HorizontalAlign="Left" />
</Columns>
</asp:GridView>
</div>
<div class="modal-footer">
<asp:LinkButton ID="BtnCalcularR" runat="server" Text="Calcular Ruta" CssClass="btn btn-primary"></asp:LinkButton>
<button data-dismiss="modal" class="btn btn-default">Cancelar</button>
</div>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</div>
<asp:UpdatePanel ID="UpHiddenBtns" runat="server">
<ContentTemplate>
<div style="display: none">
<asp:Button runat="server" ID="BtnAlerta" />
</div>
</ContentTemplate>
</asp:UpdatePanel>
</asp:Content>
<asp:Content ID="Content8" ContentPlaceHolderID="JS" runat="Server">
<script src="../Metronic/assets/layouts/layout3/scripts/jquery.datetimepicker.full.js"></script>
<script>
var directionsService;
var directionsDisplay;
var markers = [];
var polylines = [];
var indiceAnterior = 0;
// var service;
function initMap() {
map = new google.maps.Map(document.getElementById('map'), {
center: { lat: 29.0730, lng: -110.9559 },
zoom: 10
});
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function (position) {
var pos = {
lat: position.coords.latitude,
lng: position.coords.longitude
};
map.setCenter(pos);
}, function () {
handleLocationError(true, infoWindow, map.getCenter());
});
}
CargaPickers();
var input = document.getElementById('pac-input');
var searchBox = new google.maps.places.SearchBox(input);
map.controls[google.maps.ControlPosition.TOP_LEFT].push(input);
map.addListener('bounds_changed', function () {
searchBox.setBounds(map.getBounds());
});
searchBox.addListener('places_changed', function () {
var places = searchBox.getPlaces();
if (places.length == 0) {
return;
}
var bounds = new google.maps.LatLngBounds();
places.forEach(function (place) {
if (place.geometry.viewport) {
// Only geocodes have viewport.
bounds.union(place.geometry.viewport);
} else {
bounds.extend(place.geometry.location);
}
});
map.fitBounds(bounds);
});
directionsService = new google.maps.DirectionsService;
directionsDisplay = new google.maps.DirectionsRenderer;
directionsDisplay.setMap(map);
var upControlDiv = document.createElement('div');
var upControl = new ControlUltimoPunto(upControlDiv, map);
upControlDiv.index = 1;
map.controls[google.maps.ControlPosition.TOP_RIGHT].push(upControlDiv);
var routeControlDiv = document.createElement('div');
var routeControl = new ControlGuardarRuta(routeControlDiv, map);
routeControlDiv.index = 2;
map.controls[google.maps.ControlPosition.TOP_RIGHT].push(routeControlDiv);
//service = new google.maps.DistanceMatrixService;
map.addListener('click', addLatLng);
}
function CargaPickers() {
$('#C_TxtHoraI').datetimepicker({
datepicker: false,
lang: 'es',
format: 'H:i',
formatDate: 'H:i',
step: 30
});
$('#C_TxtHoraF').datetimepicker({
datepicker: false,
lang: 'es',
format: 'H:i',
formatDate: 'H:i',
step: 30
});
}
function addLatLng(event) {
// var path = poly.getPath();
// path.push(event.latLng);
var lat = event.latLng.lat();
var lng = event.latLng.lng();
var info = new google.maps.InfoWindow({
content: "(" + lat + " " + lng + ")"
});
var marker = new google.maps.Marker({
position: event.latLng,
title: 'Punto',
map: map
});
markers.push(marker);
$("#C_BtnCrear").attr("disabled", false)
marker.addListener('click', function () {
info.open(map, marker);
});
$("#CommandArg").val("(" + lng + " " + lat + ")")
if (markers.length === 1) {
var h = $('#Points').val() + "(" + lng + " " + lat + ")" + ",";
$('#Points').val(h);
} else if (markers.length > 1) {
var j = $('#Points').val() + "(" + lng + " " + lat + ")" + ",";
$('#Points').val(j);
}
//marker.addListener(marker, "click", function (point) { id = this.__gm_id; delMarker(id) });
}
var delMarker = function (id) {
var mark = markers[id];
mark.setMap(null);
}
function Limpieza() {
CargaPickers();
DeleteMarkers();
//$('#divAgregarGeoreferencia').modal('hide');
}
function DeleteMarkers() {
for (var i = 0; i < markers.length; i++) {
markers[i].setMap(null);
}
markers = [];
for (var i = 0; i < polylines.length; i++) {
polylines[i].setMap(null);
}
polylines = [];
markers = [];
$('#CommandArg').val("")
$('#Points').val("")
$("#C_BtnCrear").attr("disabled", true)
directionsDisplay.setMap(null);
$("#btnGuardarRuta").css("display", "none")
}
function calculateAndDisplayRoute(origin, destination) {
directionsService.route({
origin: origin,
destination: destination,
travelMode: 'DRIVING'
}, function (response, status) {
if (status === 'OK') {
directionsDisplay.setDirections(response);
directionsDisplay.setMap(map);
var s = "";
var legs = response.routes[0].legs;
for (i = 0; i < legs.length; i++) {
var steps = legs[i].steps;
for (j = 0; j < steps.length; j++) {
var nextSegment = steps[j].path;
for (k = 0; k < nextSegment.length; k++) {
s = s + nextSegment[k] + '+'
}
}
}
$('#CommandArg').val(s)
} else {
creaPolyline([(origin), (destination)]);
$("#C_BtnAlerta").click();
}
});
}
function CreaRuta(waypoints) {
var start = waypoints[0];
var end = waypoints[waypoints.length - 1];
var waypts = [];
for (var i = 1; i < waypoints.length - 1; i++) {
waypts.push({
location: waypoints[i],
stopover: true
});
}
directionsService.route({
origin: start,
destination: end,
travelMode: 'DRIVING',
waypoints: waypts,
optimizeWaypoints: true
}, function (response, status) {
if (status === 'OK') {
directionsDisplay.setDirections(response);
directionsDisplay.setMap(map);
var s = "";
var legs = response.routes[0].legs;
for (i = 0; i < legs.length; i++) {
var steps = legs[i].steps;
for (j = 0; j < steps.length; j++) {
var nextSegment = steps[j].path;
for (k = 0; k < nextSegment.length; k++) {
s = s + nextSegment[k] + '+'
}
}
}
$('#CommandArg').val(s)
$("#btnGuardarRuta").css("display", "")
} else {
//window.alert('Directions request failed due to ' + status);
creaPolyline(waypoints);
$("#C_BtnAlerta").click();
}
});
}
function creaPolyline(coords) {
var polyline = new google.maps.Polyline({
path: coords,
strokeColor: "#0088FF",
strokeOpacity: 0.8,
strokeWeight: 2,
fillOpacity: 0.35
});
for (var i = 0; i < coords.length; i++) {
CreaMarcador(coords[i], i + ' ')
}
polyline.setMap(map);
polylines.push(polyline);
FitBounds();
}
function CargaDatosSeleccionados(indice, valor) {
var columnaSeleccionada = 2 + indice;
$('#HdnGrupo').val(valor);
$('#C_GvGrupos tr').filter(':nth-child(' + indiceAnterior + ')').css('background-color', 'initial');
$('#C_GvGrupos tr').filter(':nth-child(' + columnaSeleccionada + ')').css('background-color', '#F5B27A');
indiceAnterior = columnaSeleccionada;
}
function FitBounds() {
var bounds = new google.maps.LatLngBounds();
for (var i = 0; i < markers.length; i++) {
if (markers[i].getVisible()) {
bounds.extend(markers[i].getPosition());
}
}
map.fitBounds(bounds);
}
function CargaDivs(Tipo) {
if (Tipo === "PointGroup") {
$("#C_TxtNombre").val("")
$("#C_TxtDescripcion").val("")
$('#divAgregarTipo').modal();
$('#myModalLabel').text("Agregar Grupo de Puntos");
$("#HdnTipo").val(Tipo)
$("#lblPuntos").text("Nombre Grupo de Puntos")
$("#C_dvEventos").css("display", "none")
$("#dvAdd").css("display", "")
$("#C_dvEstatus").css("display", "none")
}
else if (Tipo === "Point") {
if ($("#Points").val().length > 0) {
$('#divAgregarTipo').modal();
$("#C_TxtNombre").val("")
$("#C_TxtDescripcion").val("")
$("#HdnTipo").val(Tipo)
$('#myModalLabel').text("Agregar Punto(s) de Interés");
$("#lblPuntos").text("Nombre Punto(s) de Interés")
$("#C_dvEventos").css("display", "")
$("#dvAdd").css("display", "")
$("#C_dvEstatus").css("display", "none")
} else { DeleteMarkers(); alert('Haga click en el mapa para dibujar puntos de interés') }
}
else if (Tipo === "GroupRoute") {
DeleteMarkers();
$("#C_TxtNombre").val("1")
$("#C_TxtDescripcion").val("1")
$('#divAgregarTipo').modal();
$("#HdnTipo").val(Tipo)
$('#myModalLabel').text("Consultar ruta óptima para grupo de puntos");
$("#C_dvEventos").css("display", "")
$("#dvAdd").css("display", "none")
$("#C_dvEstatus").css("display", "none")
}
else if (Tipo === "Route") {
DeleteMarkers();
$('#dvConsulta').modal();
} else if (Tipo === "Edit") {
DeleteMarkers();
$('#dvEditar').modal();
$("#dvEventos").css("display", "")
}
}
function ControlUltimoPunto(controlDiv, map) {
// Set CSS for the control border.
var controlUI = document.createElement('div');
controlUI.style.backgroundColor = '#fff';
controlUI.style.borderRadius = '3px';
controlUI.style.width = '165px'
controlUI.style.boxShadow = '0 2px 6px rgba(0,0,0,.3)';
controlUI.style.cursor = 'pointer';
controlUI.style.marginRight = '5px';
controlUI.style.marginTop = '5px';
controlUI.style.marginBottom = '22px';
controlUI.style.textAlign = 'center';
controlUI.title = 'Click para borrar los puntos dibujados';
controlDiv.appendChild(controlUI);
// Set CSS for the control interior.
var controlText = document.createElement('div');
controlText.style.color = 'rgb(25,25,25)';
controlText.style.fontFamily = ' "Open Sans", sans-serif; ';
controlText.style.fontSize = '14px';
controlText.style.lineHeight = '38px';
controlText.style.paddingLeft = '5px';
controlText.style.paddingRight = '5px';
controlText.innerHTML = 'Deshacer Puntos';
controlUI.appendChild(controlText);
// Setup the click event listeners: simply set the map to Chicago.
controlUI.addEventListener('click', function () {
DeleteMarkers();
});
}
function ControlGuardarRuta(controlDiv, map) {
// Set CSS for the control border.
var controlUI = document.createElement('div');
controlUI.id = "btnGuardarRuta"
controlUI.style.display = 'none';
controlUI.style.backgroundColor = '#4B77BE';
controlUI.style.color = "#fff";
controlUI.style.borderRadius = '3px';
controlUI.style.width = '165px'
controlUI.style.boxShadow = '0 2px 6px rgba(0,0,0,.3)';
controlUI.style.cursor = 'pointer';
controlUI.style.marginRight = '5px';
controlUI.style.marginTop = '5px';
controlUI.style.marginBottom = '22px';
controlUI.style.textAlign = 'center';
controlUI.title = 'Guardar la ruta trazada como georeferencia';
controlDiv.appendChild(controlUI);
// Set CSS for the control interior.
var controlText = document.createElement('div');
controlText.style.color = '#fff';
controlText.style.fontFamily = ' "Open Sans", sans-serif; ';
controlText.style.fontSize = '14px';
controlText.style.lineHeight = '38px';
controlText.style.paddingLeft = '5px';
controlText.style.paddingRight = '5px';
controlText.innerHTML = 'Guardar Ruta';
controlUI.appendChild(controlText);
// Setup the click event listeners: simply set the map to Chicago.
controlUI.addEventListener('click', function () {
//$("#divAgregarGeoreferencia").modal()
});
}
function CreaMarcador(coords, nomEquipo) {
var marker = new google.maps.Marker({
position: coords,
title: nomEquipo,
map: map
});
markers.push(marker);
map.setCenter(coords);
}
</script>
<script src="<%= String.Format("https://maps.googleapis.com/maps/api/js?key={0}&libraries=places&callback=initMap", Extensiones.GOOGLE_MAPS_API_KEY) %>"></script>
</asp:Content>