adicionado sensoriamento do modulo atuador

This commit is contained in:
Diego Freitas 2024-02-21 16:40:38 -03:00
parent 46373953d5
commit dc0f811d84
236 changed files with 65947 additions and 441 deletions

Binary file not shown.

View File

@ -280,6 +280,7 @@
<DependentUpon>frmSenConfig.cs</DependentUpon>
</Compile>
<Compile Include="Models\AlarmeModel.cs" />
<Compile Include="Models\CameraCaminhoModel.cs" />
<Compile Include="Models\CameraModel.cs" />
<Compile Include="Models\CameraSoloModel.cs" />
<Compile Include="Models\GPSModel.cs" />
@ -345,6 +346,78 @@
<Content Include="Python\Scripts\weed-detector.py">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="Utils\offline_maps\gmapapi.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Utils\offline_maps\gmapcache\components.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Utils\offline_maps\gmapcache\empty.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Utils\offline_maps\gmapcache\gmapapi.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Utils\offline_maps\gmapcache\gstatic\arrow-down.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Utils\offline_maps\gmapcache\gstatic\cb\mod_cb_scout\cb_scout_sprite_api_003.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Utils\offline_maps\gmapcache\gstatic\cb\target_locking.gif">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Utils\offline_maps\gmapcache\gstatic\closedhand_8_8.cur">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Utils\offline_maps\gmapcache\gstatic\google_white.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Utils\offline_maps\gmapcache\gstatic\iw3.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Utils\offline_maps\gmapcache\gstatic\iws3.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Utils\offline_maps\gmapcache\gstatic\mapcontrols3d7.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Utils\offline_maps\gmapcache\gstatic\markers2\marker_sprite.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Utils\offline_maps\gmapcache\gstatic\mv\imgs8.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Utils\offline_maps\gmapcache\gstatic\openhand_8_8.cur">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Utils\offline_maps\gmapcache\gstatic\rotate2.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Utils\offline_maps\gmapcache\gstatic\szc4.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Utils\offline_maps\gmapcache\gstatic\transparent.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Utils\offline_maps\gmapcache\main.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Utils\offline_maps\index.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Utils\offline_maps\map.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Utils\offline_maps\script.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Utils\offline_maps\style.css">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Utils\offline_maps\webStorage.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<EmbeddedResource Include="Forms\Atuador\frmAtuConfig.resx">
<DependentUpon>frmAtuConfig.cs</DependentUpon>
</EmbeddedResource>
@ -479,6 +552,9 @@
<None Include="Python\Models\deeplabv3plus\__pycache__\__init__.cpython-311.pyc">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<Content Include="Utils\offline_maps\appcache.manifest">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup>
<None Include="App.config" />

View File

@ -27,9 +27,9 @@ namespace AgroBase.Forms
private Timer tmrLeitura;
private int MaxLeituras = 10;
private string VideoPorta = VariaveisPortas.CameraSolo;
private string VideoPorta = VariaveisPortas.CameraSolo.ToString();
private string VideoUrl = "green_objects";
private string SocketPorta = VariaveisPortas.SocketSolo;
private string SocketPorta = VariaveisPortas.SocketSolo.ToString();
private string ArquivoLeitura = "objetos.json";
public frmAtuCamera()

View File

@ -30,11 +30,19 @@
{
this.nudBicosQtd = new System.Windows.Forms.NumericUpDown();
this.gpbBicos = new System.Windows.Forms.GroupBox();
this.lblBicosQtd = new System.Windows.Forms.Label();
this.chbBicosAtuacao = new System.Windows.Forms.CheckBox();
this.lblBicosQtd = new System.Windows.Forms.Label();
this.btnSalvar = new System.Windows.Forms.Button();
this.btnSensoriamento = new System.Windows.Forms.Button();
this.gpbReservatorio = new System.Windows.Forms.GroupBox();
this.lblDensidade = new System.Windows.Forms.Label();
this.txtDensidade = new System.Windows.Forms.TextBox();
this.lblCapacidadeMax = new System.Windows.Forms.Label();
this.nudCapMax = new System.Windows.Forms.NumericUpDown();
((System.ComponentModel.ISupportInitialize)(this.nudBicosQtd)).BeginInit();
this.gpbBicos.SuspendLayout();
this.gpbReservatorio.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.nudCapMax)).BeginInit();
this.SuspendLayout();
//
// nudBicosQtd
@ -57,15 +65,6 @@
this.gpbBicos.TabStop = false;
this.gpbBicos.Text = "Bicos Pulverizadores";
//
// lblBicosQtd
//
this.lblBicosQtd.AutoSize = true;
this.lblBicosQtd.Location = new System.Drawing.Point(6, 21);
this.lblBicosQtd.Name = "lblBicosQtd";
this.lblBicosQtd.Size = new System.Drawing.Size(62, 13);
this.lblBicosQtd.TabIndex = 2;
this.lblBicosQtd.Text = "Quantidade";
//
// chbBicosAtuacao
//
this.chbBicosAtuacao.AutoSize = true;
@ -76,9 +75,19 @@
this.chbBicosAtuacao.Text = "Atuação em nível alto";
this.chbBicosAtuacao.UseVisualStyleBackColor = true;
//
// lblBicosQtd
//
this.lblBicosQtd.AutoSize = true;
this.lblBicosQtd.Location = new System.Drawing.Point(6, 21);
this.lblBicosQtd.Name = "lblBicosQtd";
this.lblBicosQtd.Size = new System.Drawing.Size(62, 13);
this.lblBicosQtd.TabIndex = 2;
this.lblBicosQtd.Text = "Quantidade";
//
// btnSalvar
//
this.btnSalvar.Location = new System.Drawing.Point(176, 63);
this.btnSalvar.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.btnSalvar.Location = new System.Drawing.Point(352, 63);
this.btnSalvar.Name = "btnSalvar";
this.btnSalvar.Size = new System.Drawing.Size(94, 23);
this.btnSalvar.TabIndex = 3;
@ -86,11 +95,72 @@
this.btnSalvar.UseVisualStyleBackColor = true;
this.btnSalvar.Click += new System.EventHandler(this.btnSalvar_Click);
//
// btnSensoriamento
//
this.btnSensoriamento.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.btnSensoriamento.Location = new System.Drawing.Point(352, 17);
this.btnSensoriamento.Name = "btnSensoriamento";
this.btnSensoriamento.Size = new System.Drawing.Size(94, 23);
this.btnSensoriamento.TabIndex = 4;
this.btnSensoriamento.Text = "Sensoriamento";
this.btnSensoriamento.UseVisualStyleBackColor = true;
this.btnSensoriamento.Click += new System.EventHandler(this.btnSensoriamento_Click);
//
// gpbReservatorio
//
this.gpbReservatorio.Controls.Add(this.nudCapMax);
this.gpbReservatorio.Controls.Add(this.lblCapacidadeMax);
this.gpbReservatorio.Controls.Add(this.txtDensidade);
this.gpbReservatorio.Controls.Add(this.lblDensidade);
this.gpbReservatorio.Location = new System.Drawing.Point(176, 12);
this.gpbReservatorio.Name = "gpbReservatorio";
this.gpbReservatorio.Size = new System.Drawing.Size(169, 74);
this.gpbReservatorio.TabIndex = 5;
this.gpbReservatorio.TabStop = false;
this.gpbReservatorio.Text = "Reservatório Herbicida";
//
// lblDensidade
//
this.lblDensidade.AutoSize = true;
this.lblDensidade.Location = new System.Drawing.Point(10, 21);
this.lblDensidade.Name = "lblDensidade";
this.lblDensidade.Size = new System.Drawing.Size(58, 13);
this.lblDensidade.TabIndex = 0;
this.lblDensidade.Text = "Densidade";
//
// txtDensidade
//
this.txtDensidade.Location = new System.Drawing.Point(84, 19);
this.txtDensidade.Name = "txtDensidade";
this.txtDensidade.Size = new System.Drawing.Size(72, 20);
this.txtDensidade.TabIndex = 1;
this.txtDensidade.Text = "0,00";
this.txtDensidade.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
//
// lblCapacidadeMax
//
this.lblCapacidadeMax.AutoSize = true;
this.lblCapacidadeMax.Location = new System.Drawing.Point(10, 47);
this.lblCapacidadeMax.Name = "lblCapacidadeMax";
this.lblCapacidadeMax.Size = new System.Drawing.Size(68, 13);
this.lblCapacidadeMax.TabIndex = 2;
this.lblCapacidadeMax.Text = "Cap. Máxima";
//
// nudCapMax
//
this.nudCapMax.Location = new System.Drawing.Point(84, 45);
this.nudCapMax.Name = "nudCapMax";
this.nudCapMax.Size = new System.Drawing.Size(72, 20);
this.nudCapMax.TabIndex = 4;
this.nudCapMax.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
//
// frmAtuConfig
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(282, 100);
this.ClientSize = new System.Drawing.Size(458, 95);
this.Controls.Add(this.gpbReservatorio);
this.Controls.Add(this.btnSensoriamento);
this.Controls.Add(this.btnSalvar);
this.Controls.Add(this.gpbBicos);
this.Name = "frmAtuConfig";
@ -101,6 +171,9 @@
((System.ComponentModel.ISupportInitialize)(this.nudBicosQtd)).EndInit();
this.gpbBicos.ResumeLayout(false);
this.gpbBicos.PerformLayout();
this.gpbReservatorio.ResumeLayout(false);
this.gpbReservatorio.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.nudCapMax)).EndInit();
this.ResumeLayout(false);
}
@ -111,5 +184,11 @@
private System.Windows.Forms.CheckBox chbBicosAtuacao;
private System.Windows.Forms.Label lblBicosQtd;
private System.Windows.Forms.Button btnSalvar;
private System.Windows.Forms.Button btnSensoriamento;
private System.Windows.Forms.GroupBox gpbReservatorio;
private System.Windows.Forms.Label lblDensidade;
private System.Windows.Forms.TextBox txtDensidade;
private System.Windows.Forms.Label lblCapacidadeMax;
private System.Windows.Forms.NumericUpDown nudCapMax;
}
}

View File

@ -1,6 +1,8 @@
using AgroBase.Comum;
using AgroBase.Forms.Sensoriamento;
using AgroBase.Models;
using AgroBase.Models.Modules;
using Emgu.CV.Ocl;
using System;
using System.Collections.Generic;
using System.ComponentModel;
@ -32,6 +34,8 @@ namespace AgroBase.Forms.Atuador
chbBicosAtuacao.Checked = Disp.Dados.AtuacaoNivelAlto;
nudBicosQtd.Value = Disp.Dados.QuantidadeBicos;
txtDensidade.Text = Disp.Dados.DensidadeHerbicida.ToString("0.00");
nudCapMax.Value = Convert.ToInt32(Disp.Dados.CapacidadeReservatorio);
}
private void frmAtuConfig_FormClosing(object sender, FormClosingEventArgs e)
@ -44,8 +48,18 @@ namespace AgroBase.Forms.Atuador
{
Disp.Dados.AtuacaoNivelAlto = chbBicosAtuacao.Checked;
Disp.Dados.QuantidadeBicos = Convert.ToInt32(nudBicosQtd.Value);
Disp.Dados.DensidadeHerbicida = Convert.ToDouble(txtDensidade.Text.Replace(".", ","));
Disp.Dados.CapacidadeReservatorio = Convert.ToDouble(nudCapMax.Value);
Disp.SalvarParametros(Disp.Dados);
}
private void btnSensoriamento_Click(object sender, EventArgs e)
{
frmSenConfig frmConfig = new frmSenConfig();
frmConfig.Dispositivo = T_Code.Atu;
frmConfig.Text += " (Atuador)";
frmConfig.ShowDialog();
}
}
}

View File

@ -32,9 +32,9 @@ namespace AgroBase.Forms.Movimentacao
private Timer tmrLeitura;
private int MaxLeituras = 1;
private string VideoPorta = VariaveisPortas.CameraCaminho;
private string VideoPorta = VariaveisPortas.CameraCaminho.ToString();
private string VideoUrl = "street_detector";
private string SocketPorta = VariaveisPortas.SocketCaminho;
private string SocketPorta = VariaveisPortas.SocketCaminho.ToString();
private bool MostrarDebug = true;
private string ArquivoLeitura = "leitura_solo.json";

View File

@ -37,8 +37,7 @@ namespace AgroBase.Forms.Operacoes
this.pnlCameraSoloE = new System.Windows.Forms.Panel();
this.pnlCameraCaminho = new System.Windows.Forms.Panel();
this.pnlAtuadores = new System.Windows.Forms.Panel();
this.pnlMapa = new System.Windows.Forms.Panel();
this.btnDesenharMapa = new System.Windows.Forms.Button();
this.pnlCaminho = new System.Windows.Forms.Panel();
this.pnlGraficos = new System.Windows.Forms.Panel();
this.chartGraficos = new System.Windows.Forms.DataVisualization.Charting.Chart();
this.pnlNiveis = new System.Windows.Forms.Panel();
@ -70,10 +69,16 @@ namespace AgroBase.Forms.Operacoes
this.lblDistanciaEsquerda = new System.Windows.Forms.Label();
this.lblDistanciaDireita = new System.Windows.Forms.Label();
this.pnlInferior = new System.Windows.Forms.Panel();
this.chbGPSativo = new System.Windows.Forms.CheckBox();
this.chbATUativo = new System.Windows.Forms.CheckBox();
this.chbDIRativo = new System.Windows.Forms.CheckBox();
this.chbMOVativo = new System.Windows.Forms.CheckBox();
this.lblUltimaLeituraRua = new System.Windows.Forms.Label();
this.lblUltimaLeituraSolo = new System.Windows.Forms.Label();
this.pnlMapa = new System.Windows.Forms.Panel();
this.lblPressao = new System.Windows.Forms.Label();
this.pnlCameraSolo.SuspendLayout();
this.pnlMapa.SuspendLayout();
this.pnlAtuadores.SuspendLayout();
this.pnlGraficos.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.chartGraficos)).BeginInit();
this.pnlNiveis.SuspendLayout();
@ -87,22 +92,24 @@ namespace AgroBase.Forms.Operacoes
this.pnlCameraSolo.BackColor = System.Drawing.SystemColors.ControlDark;
this.pnlCameraSolo.Controls.Add(this.pnlCameraSoloD);
this.pnlCameraSolo.Controls.Add(this.pnlCameraSoloE);
this.pnlCameraSolo.Location = new System.Drawing.Point(9, 32);
this.pnlCameraSolo.Location = new System.Drawing.Point(9, 217);
this.pnlCameraSolo.Margin = new System.Windows.Forms.Padding(2);
this.pnlCameraSolo.Name = "pnlCameraSolo";
this.pnlCameraSolo.Size = new System.Drawing.Size(592, 453);
this.pnlCameraSolo.Size = new System.Drawing.Size(592, 268);
this.pnlCameraSolo.TabIndex = 0;
//
// pnlCameraSoloD
//
this.pnlCameraSoloD.Location = new System.Drawing.Point(299, 186);
this.pnlCameraSoloD.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.pnlCameraSoloD.Location = new System.Drawing.Point(299, 2);
this.pnlCameraSoloD.Name = "pnlCameraSoloD";
this.pnlCameraSoloD.Size = new System.Drawing.Size(289, 264);
this.pnlCameraSoloD.TabIndex = 1;
//
// pnlCameraSoloE
//
this.pnlCameraSoloE.Location = new System.Drawing.Point(4, 186);
this.pnlCameraSoloE.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.pnlCameraSoloE.Location = new System.Drawing.Point(4, 2);
this.pnlCameraSoloE.Name = "pnlCameraSoloE";
this.pnlCameraSoloE.Size = new System.Drawing.Size(289, 264);
this.pnlCameraSoloE.TabIndex = 0;
@ -120,6 +127,7 @@ namespace AgroBase.Forms.Operacoes
//
this.pnlAtuadores.BackColor = System.Drawing.SystemColors.Control;
this.pnlAtuadores.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.pnlAtuadores.Controls.Add(this.lblPressao);
this.pnlAtuadores.Location = new System.Drawing.Point(9, 491);
this.pnlAtuadores.Margin = new System.Windows.Forms.Padding(2);
this.pnlAtuadores.Name = "pnlAtuadores";
@ -127,27 +135,15 @@ namespace AgroBase.Forms.Operacoes
this.pnlAtuadores.TabIndex = 2;
this.pnlAtuadores.Paint += new System.Windows.Forms.PaintEventHandler(this.pnlAtuadores_Paint);
//
// pnlMapa
// pnlCaminho
//
this.pnlMapa.BackColor = System.Drawing.Color.White;
this.pnlMapa.Controls.Add(this.btnDesenharMapa);
this.pnlMapa.Location = new System.Drawing.Point(627, 10);
this.pnlMapa.Margin = new System.Windows.Forms.Padding(2);
this.pnlMapa.Name = "pnlMapa";
this.pnlMapa.Size = new System.Drawing.Size(384, 279);
this.pnlMapa.TabIndex = 3;
this.pnlMapa.Paint += new System.Windows.Forms.PaintEventHandler(this.pnlMapa_Paint);
//
// btnDesenharMapa
//
this.btnDesenharMapa.Location = new System.Drawing.Point(306, 258);
this.btnDesenharMapa.Margin = new System.Windows.Forms.Padding(2);
this.btnDesenharMapa.Name = "btnDesenharMapa";
this.btnDesenharMapa.Size = new System.Drawing.Size(76, 19);
this.btnDesenharMapa.TabIndex = 14;
this.btnDesenharMapa.Text = "Desenhar";
this.btnDesenharMapa.UseVisualStyleBackColor = true;
this.btnDesenharMapa.Click += new System.EventHandler(this.btnDesenharMapa_Click);
this.pnlCaminho.BackColor = System.Drawing.Color.White;
this.pnlCaminho.Location = new System.Drawing.Point(627, 21);
this.pnlCaminho.Margin = new System.Windows.Forms.Padding(2);
this.pnlCaminho.Name = "pnlCaminho";
this.pnlCaminho.Size = new System.Drawing.Size(384, 279);
this.pnlCaminho.TabIndex = 3;
this.pnlCaminho.Paint += new System.Windows.Forms.PaintEventHandler(this.pnlCaminho_Paint);
//
// pnlGraficos
//
@ -341,7 +337,7 @@ namespace AgroBase.Forms.Operacoes
//
// btnCarregarMapa
//
this.btnCarregarMapa.Location = new System.Drawing.Point(933, 291);
this.btnCarregarMapa.Location = new System.Drawing.Point(280, 5);
this.btnCarregarMapa.Margin = new System.Windows.Forms.Padding(2);
this.btnCarregarMapa.Name = "btnCarregarMapa";
this.btnCarregarMapa.Size = new System.Drawing.Size(76, 22);
@ -354,7 +350,7 @@ namespace AgroBase.Forms.Operacoes
//
this.lblMapaCarregado.AutoSize = true;
this.lblMapaCarregado.Font = new System.Drawing.Font("Mongolian Baiti", 9F, System.Drawing.FontStyle.Bold);
this.lblMapaCarregado.Location = new System.Drawing.Point(688, 291);
this.lblMapaCarregado.Location = new System.Drawing.Point(11, 11);
this.lblMapaCarregado.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.lblMapaCarregado.Name = "lblMapaCarregado";
this.lblMapaCarregado.Size = new System.Drawing.Size(129, 13);
@ -453,7 +449,7 @@ namespace AgroBase.Forms.Operacoes
// pnlInclinacao
//
this.pnlInclinacao.BackColor = System.Drawing.Color.White;
this.pnlInclinacao.Location = new System.Drawing.Point(606, 218);
this.pnlInclinacao.Location = new System.Drawing.Point(625, 6);
this.pnlInclinacao.Margin = new System.Windows.Forms.Padding(2);
this.pnlInclinacao.Name = "pnlInclinacao";
this.pnlInclinacao.Size = new System.Drawing.Size(78, 84);
@ -463,27 +459,31 @@ namespace AgroBase.Forms.Operacoes
// lblDistanciaEsquerda
//
this.lblDistanciaEsquerda.AutoSize = true;
this.lblDistanciaEsquerda.Font = new System.Drawing.Font("Mongolian Baiti", 9F, System.Drawing.FontStyle.Bold);
this.lblDistanciaEsquerda.Location = new System.Drawing.Point(9, 16);
this.lblDistanciaEsquerda.Font = new System.Drawing.Font("Mongolian Baiti", 9.25F, System.Drawing.FontStyle.Bold);
this.lblDistanciaEsquerda.Location = new System.Drawing.Point(608, 300);
this.lblDistanciaEsquerda.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.lblDistanciaEsquerda.Name = "lblDistanciaEsquerda";
this.lblDistanciaEsquerda.Size = new System.Drawing.Size(180, 13);
this.lblDistanciaEsquerda.Size = new System.Drawing.Size(215, 14);
this.lblDistanciaEsquerda.TabIndex = 11;
this.lblDistanciaEsquerda.Text = "Distancia da Esquerda: 000 px";
this.lblDistanciaEsquerda.Text = "Distancia da Esquerda: 00.00 cm";
//
// lblDistanciaDireita
//
this.lblDistanciaDireita.AutoSize = true;
this.lblDistanciaDireita.Font = new System.Drawing.Font("Mongolian Baiti", 9F, System.Drawing.FontStyle.Bold);
this.lblDistanciaDireita.Location = new System.Drawing.Point(190, 16);
this.lblDistanciaDireita.Location = new System.Drawing.Point(834, 301);
this.lblDistanciaDireita.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.lblDistanciaDireita.Name = "lblDistanciaDireita";
this.lblDistanciaDireita.Size = new System.Drawing.Size(167, 13);
this.lblDistanciaDireita.Size = new System.Drawing.Size(180, 13);
this.lblDistanciaDireita.TabIndex = 12;
this.lblDistanciaDireita.Text = "Distancia da Direita: 000 px";
this.lblDistanciaDireita.Text = "Distancia da Direita: 00.00 cm";
//
// pnlInferior
//
this.pnlInferior.Controls.Add(this.chbGPSativo);
this.pnlInferior.Controls.Add(this.chbATUativo);
this.pnlInferior.Controls.Add(this.chbDIRativo);
this.pnlInferior.Controls.Add(this.chbMOVativo);
this.pnlInferior.Controls.Add(this.lblUltimaLeituraRua);
this.pnlInferior.Controls.Add(this.lblUltimaLeituraSolo);
this.pnlInferior.Font = new System.Drawing.Font("Mongolian Baiti", 9F, System.Drawing.FontStyle.Bold);
@ -493,6 +493,46 @@ namespace AgroBase.Forms.Operacoes
this.pnlInferior.Size = new System.Drawing.Size(592, 41);
this.pnlInferior.TabIndex = 13;
//
// chbGPSativo
//
this.chbGPSativo.AutoSize = true;
this.chbGPSativo.Location = new System.Drawing.Point(531, 20);
this.chbGPSativo.Name = "chbGPSativo";
this.chbGPSativo.Size = new System.Drawing.Size(52, 17);
this.chbGPSativo.TabIndex = 9;
this.chbGPSativo.Text = "GPS";
this.chbGPSativo.UseVisualStyleBackColor = true;
//
// chbATUativo
//
this.chbATUativo.AutoSize = true;
this.chbATUativo.Location = new System.Drawing.Point(531, 3);
this.chbATUativo.Name = "chbATUativo";
this.chbATUativo.Size = new System.Drawing.Size(54, 17);
this.chbATUativo.TabIndex = 8;
this.chbATUativo.Text = "ATU";
this.chbATUativo.UseVisualStyleBackColor = true;
//
// chbDIRativo
//
this.chbDIRativo.AutoSize = true;
this.chbDIRativo.Location = new System.Drawing.Point(467, 23);
this.chbDIRativo.Name = "chbDIRativo";
this.chbDIRativo.Size = new System.Drawing.Size(50, 17);
this.chbDIRativo.TabIndex = 7;
this.chbDIRativo.Text = "DIR";
this.chbDIRativo.UseVisualStyleBackColor = true;
//
// chbMOVativo
//
this.chbMOVativo.AutoSize = true;
this.chbMOVativo.Location = new System.Drawing.Point(467, 3);
this.chbMOVativo.Name = "chbMOVativo";
this.chbMOVativo.Size = new System.Drawing.Size(58, 17);
this.chbMOVativo.TabIndex = 6;
this.chbMOVativo.Text = "MOV";
this.chbMOVativo.UseVisualStyleBackColor = true;
//
// lblUltimaLeituraRua
//
this.lblUltimaLeituraRua.AutoSize = true;
@ -513,23 +553,40 @@ namespace AgroBase.Forms.Operacoes
this.lblUltimaLeituraSolo.TabIndex = 4;
this.lblUltimaLeituraSolo.Text = "Ultima Leitura Solo: 00:00:00.000";
//
// pnlMapa
//
this.pnlMapa.Location = new System.Drawing.Point(9, 32);
this.pnlMapa.Name = "pnlMapa";
this.pnlMapa.Size = new System.Drawing.Size(347, 181);
this.pnlMapa.TabIndex = 14;
//
// lblPressao
//
this.lblPressao.AutoSize = true;
this.lblPressao.Location = new System.Drawing.Point(-2, 0);
this.lblPressao.Name = "lblPressao";
this.lblPressao.Size = new System.Drawing.Size(57, 13);
this.lblPressao.TabIndex = 0;
this.lblPressao.Text = "P: 0.00 psi";
//
// frmOperacaoSeguidorLinha
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.Color.White;
this.ClientSize = new System.Drawing.Size(1020, 697);
this.Controls.Add(this.lblDistanciaEsquerda);
this.Controls.Add(this.pnlMapa);
this.Controls.Add(this.pnlInferior);
this.Controls.Add(this.btnCarregarMapa);
this.Controls.Add(this.lblDistanciaDireita);
this.Controls.Add(this.lblDistanciaEsquerda);
this.Controls.Add(this.pnlInclinacao);
this.Controls.Add(this.gpbInformacoesGerais);
this.Controls.Add(this.lblMapaCarregado);
this.Controls.Add(this.gpbOpcoes);
this.Controls.Add(this.pnlNiveis);
this.Controls.Add(this.pnlGraficos);
this.Controls.Add(this.pnlMapa);
this.Controls.Add(this.pnlCaminho);
this.Controls.Add(this.pnlAtuadores);
this.Controls.Add(this.pnlCameraCaminho);
this.Controls.Add(this.pnlCameraSolo);
@ -540,7 +597,8 @@ namespace AgroBase.Forms.Operacoes
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.frmOperacaoSeguidorLinha_FormClosing);
this.Load += new System.EventHandler(this.frmOperacaoSeguidorLinha_Load);
this.pnlCameraSolo.ResumeLayout(false);
this.pnlMapa.ResumeLayout(false);
this.pnlAtuadores.ResumeLayout(false);
this.pnlAtuadores.PerformLayout();
this.pnlGraficos.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.chartGraficos)).EndInit();
this.pnlNiveis.ResumeLayout(false);
@ -561,7 +619,7 @@ namespace AgroBase.Forms.Operacoes
private System.Windows.Forms.Panel pnlCameraSolo;
private System.Windows.Forms.Panel pnlCameraCaminho;
private System.Windows.Forms.Panel pnlAtuadores;
private System.Windows.Forms.Panel pnlMapa;
private System.Windows.Forms.Panel pnlCaminho;
private System.Windows.Forms.Panel pnlGraficos;
private System.Windows.Forms.DataVisualization.Charting.Chart chartGraficos;
private System.Windows.Forms.Panel pnlNiveis;
@ -593,10 +651,15 @@ namespace AgroBase.Forms.Operacoes
private System.Windows.Forms.Panel pnlInferior;
private System.Windows.Forms.Label lblUltimaLeituraRua;
private System.Windows.Forms.Label lblUltimaLeituraSolo;
private System.Windows.Forms.Button btnDesenharMapa;
private System.Windows.Forms.Panel pnlCameraSoloD;
private System.Windows.Forms.Panel pnlCameraSoloE;
private System.Windows.Forms.ComboBox cmbCameraSoloD;
private System.Windows.Forms.Label lblCameraSoloD;
private System.Windows.Forms.Panel pnlMapa;
private System.Windows.Forms.CheckBox chbGPSativo;
private System.Windows.Forms.CheckBox chbATUativo;
private System.Windows.Forms.CheckBox chbDIRativo;
private System.Windows.Forms.CheckBox chbMOVativo;
private System.Windows.Forms.Label lblPressao;
}
}

View File

@ -4,6 +4,7 @@ using AgroBase.Models.Modules;
using AgroBase.Services;
using CefSharp;
using CefSharp.WinForms;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.ComponentModel;
@ -23,9 +24,7 @@ namespace AgroBase.Forms.Operacoes
{
private List<CameraSoloModel> CamerasSolo = new List<CameraSoloModel>();
private CameraService<CameraAnguloModel> cameraCaminho = new CameraService<CameraAnguloModel>();
private ChromiumWebBrowser webCaminho = null;
private string cameraCaminhoSelecionada = "";
private CameraCaminhoModel cameraCaminho;
private ChromiumWebBrowser webMapa = null;
@ -35,12 +34,21 @@ namespace AgroBase.Forms.Operacoes
DispositivosService<DirecionalModel> Direcional;
DispositivosService<AtuadorModel> Atuador;
private List<PointF> pathPoints = new List<PointF>();
private PointF currentPosition = new PointF(0, 0);
public frmOperacaoSeguidorLinha()
{
InitializeComponent();
// Ativa o double buffering
this.DoubleBuffered = true;
this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
this.SetStyle(ControlStyles.UserPaint, true);
this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
pnlAtuadores.GetType().GetMethod("SetStyle", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).Invoke(pnlAtuadores, new object[] { ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer, true });
pnlCaminho.GetType().GetMethod("SetStyle", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).Invoke(pnlCaminho, new object[] { ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer, true });
pnlInclinacao.GetType().GetMethod("SetStyle", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).Invoke(pnlInclinacao, new object[] { ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer, true });
}
private void frmOperacaoSeguidorLinha_Load(object sender, EventArgs e)
@ -68,13 +76,18 @@ namespace AgroBase.Forms.Operacoes
Movimentacao = (DispositivosService<MovimentacaoModel>)Variaveis.DispositivosConectados.FirstOrDefault(x => x.Dispositivo == Enuns.T_Code.Mov);
Direcional = (DispositivosService<DirecionalModel>)Variaveis.DispositivosConectados.FirstOrDefault(x => x.Dispositivo == Enuns.T_Code.Dir);
Atuador = (DispositivosService<AtuadorModel>)Variaveis.DispositivosConectados.FirstOrDefault(x => x.Dispositivo == Enuns.T_Code.Atu);
chbMOVativo.Checked = Movimentacao != null && Movimentacao._Porta.IsOpen;
chbDIRativo.Checked = Direcional != null && Direcional._Porta.IsOpen;
chbATUativo.Checked = Atuador != null && Atuador._Porta.IsOpen;
chbGPSativo.Checked = GPSService.PortaGPS != null && GPSService.PortaGPS.IsOpen;
AtualizarGrafico();
}
private void AtualizaListaCameras()
{
var listaCameras = cameraCaminho.AtualizaListaCameras().ToArray();
var listaCameras = new CameraService<object>().AtualizaListaCameras().ToArray();
var cameras = gpbOpcoes.Controls.OfType<ComboBox>().Where(x => x.Name.Contains("cmbCameraSolo")).ToList();
foreach (ComboBox cmb in cameras)
@ -93,8 +106,8 @@ namespace AgroBase.Forms.Operacoes
CameraSelecionada = "",
combo = cmb,
MaxLeituras = 10,
SocketPorta = (6535 + CamerasSolo.Count()).ToString(),
VideoPorta = (9080 + CamerasSolo.Count()).ToString(),
SocketPorta = (VariaveisPortas.SocketSolo + CamerasSolo.Count()).ToString(),
VideoPorta = (VariaveisPortas.CameraSolo + CamerasSolo.Count()).ToString(),
VideoUrl = "green_objects_" + CamNome,
panel = pnlCameraSolo.Controls.OfType<Panel>().Where(x => x.Name.Replace("pnl", "cmb") == cmb.Name).FirstOrDefault(),
};
@ -110,14 +123,38 @@ namespace AgroBase.Forms.Operacoes
CameraSolo.combo.SelectedIndex = CameraSolo.camera.selectedCamera;
}
cameraCaminho.selectedCamera = cmbCameraCaminho.SelectedIndex > 0 ? cmbCameraCaminho.SelectedIndex : 0;
if (cameraCaminho == null)
{
cameraCaminho = new CameraCaminhoModel()
{
Nome = "Caminho",
Posicao = 0,
ArquivoLeitura = "leitura_ruas.json",
browser = null,
camera = new CameraService<CameraDeepLabV3PlusModel>(),
CameraSelecionada = "",
combo = cmbCameraCaminho,
MaxLeituras = 1,
SocketPorta = (VariaveisPortas.SocketCaminho + 0).ToString(),
VideoPorta = (VariaveisPortas.CameraCaminho + 0).ToString(),
VideoUrl = "street_detector",
panel = pnlCameraCaminho,
Angulo = 0,
AnguloDireito = 0,
AnguloEsquerdo = 0,
Leituras = new List<CameraDeepLabV3PlusModel>(),
PontosExtremos = new List<Point>()
};
}
cameraCaminho.camera.selectedCamera = cmbCameraCaminho.SelectedIndex > 0 ? cmbCameraCaminho.SelectedIndex : 0;
cmbCameraCaminho.Items.Clear();
cmbCameraCaminho.Items.AddRange(listaCameras);
if (cmbCameraCaminho.Items.Count == 1)
{
cameraCaminho.selectedCamera = 0;
cameraCaminho.camera.selectedCamera = 0;
}
cmbCameraCaminho.SelectedIndex = cameraCaminho.selectedCamera;
cmbCameraCaminho.SelectedIndex = cameraCaminho.camera.selectedCamera;
}
@ -202,17 +239,17 @@ namespace AgroBase.Forms.Operacoes
private void cmbCameraCaminho_SelectedIndexChanged(object sender, EventArgs e)
{
if (cameraCaminhoSelecionada != "Sem vídeo" && cameraCaminhoSelecionada != "")
if (cameraCaminho.CameraSelecionada != "Sem vídeo" && cameraCaminho.CameraSelecionada != "")
{
//cmbCameraSoloE.Items.Add(cameraCaminhoSelecionada);
CamerasSolo.ForEach(Camera =>
{
Camera.combo.Items.Add(cameraCaminhoSelecionada);
Camera.combo.Items.Add(cameraCaminho.CameraSelecionada);
});
}
cameraCaminho.selectedCamera = cmbCameraCaminho.SelectedIndex;
if (cameraCaminho.selectedCamera > 0)
cameraCaminho.camera.selectedCamera = cmbCameraCaminho.SelectedIndex;
if (cameraCaminho.camera.selectedCamera > 0)
{
DesligarCameraCaminho();
IniciarCameraCaminho();
@ -221,16 +258,16 @@ namespace AgroBase.Forms.Operacoes
{
DesligarCameraCaminho();
}
cameraCaminhoSelecionada = cmbCameraCaminho.Text;
cameraCaminho.CameraSelecionada = cmbCameraCaminho.Text;
//btnIniciarOperacao.Enabled = cmbCameraSolo.SelectedIndex > 0 && cmbCameraCaminho.SelectedIndex > 0;
if (cameraCaminhoSelecionada != "Sem vídeo" && cameraCaminhoSelecionada != "")
if (cameraCaminho.CameraSelecionada != "Sem vídeo" && cameraCaminho.CameraSelecionada != "")
{
cmbCameraSoloE.Items.Remove(cameraCaminhoSelecionada);
cmbCameraSoloE.Items.Remove(cameraCaminho.CameraSelecionada);
CamerasSolo.ForEach(Camera =>
{
Camera.combo.Items.Remove(cameraCaminhoSelecionada);
Camera.combo.Items.Remove(cameraCaminho.CameraSelecionada);
});
}
@ -238,26 +275,20 @@ namespace AgroBase.Forms.Operacoes
private void IniciarCameraCaminho()
{
string ArquivoLeitura = "angulos.json";
int MaxLeituras = 10;
string VideoPorta = VariaveisPortas.CameraCaminho;
string VideoUrl = "line_angles";
string SocketPorta = VariaveisPortas.SocketCaminho;
cameraCaminho.ArquivoLeitura = ArquivoLeitura;
cameraCaminho.IniciarCamera(
PythonService.ScriptLineAngle,
new string[] { MaxLeituras.ToString(), VideoPorta, VideoUrl, ArquivoLeitura, "1", SocketPorta },
VideoPorta,
VideoUrl,
SocketPorta
cameraCaminho.ArquivoLeitura = cameraCaminho.ArquivoLeitura;
cameraCaminho.camera.IniciarCamera(
PythonService.ScriptStreetDetector,
new string[] { cameraCaminho.MaxLeituras.ToString(), cameraCaminho.VideoPorta, cameraCaminho.VideoUrl, cameraCaminho.ArquivoLeitura, "1", cameraCaminho.SocketPorta },
cameraCaminho.VideoPorta,
cameraCaminho.VideoUrl,
cameraCaminho.SocketPorta
);
if (webCaminho == null)
if (cameraCaminho.browser == null)
{
webCaminho = new ChromiumWebBrowser(cameraCaminho.URLcamera);
pnlCameraCaminho.Controls.Add(webCaminho);
webCaminho.Dock = DockStyle.Fill;
cameraCaminho.browser = new ChromiumWebBrowser(cameraCaminho.camera.URLcamera);
cameraCaminho.panel.Controls.Add(cameraCaminho.browser);
cameraCaminho.browser.Dock = DockStyle.Fill;
}
}
@ -265,15 +296,15 @@ namespace AgroBase.Forms.Operacoes
{
try
{
pnlCameraCaminho.Controls.Remove(webCaminho);
webCaminho = null;
if (cameraCaminho.socket != null)
cameraCaminho.panel.Controls.Remove(cameraCaminho.browser);
cameraCaminho.browser = null;
if (cameraCaminho.camera.socket != null)
{
cameraCaminho.socket.Disconnect();
cameraCaminho.camera.socket.Disconnect();
}
if (cameraCaminho.pythonProcess != null)
if (cameraCaminho.camera.pythonProcess != null)
{
cameraCaminho.pythonProcess.Kill();
cameraCaminho.camera.pythonProcess.Kill();
}
}
catch (Exception ex)
@ -335,7 +366,7 @@ namespace AgroBase.Forms.Operacoes
cmbCameraSoloD.Enabled = false;
cmbCameraCaminho.Enabled = false;
Variaveis.OperacaoEmAndamento.IniciarOperacao();
Variaveis.OperacaoEmAndamento.IniciarOperacao(null, false);
tmrLeituras.Tick += TmrLeituras_Tick;
tmrLeituras.Start();
@ -410,26 +441,10 @@ namespace AgroBase.Forms.Operacoes
AtualizaLeituraCameraSolo(CameraSolo);
});
if (cameraCaminho.socket != null && cameraCaminho.socket.DadosRecebidos.Any())
{
var leitura = cameraCaminho.socket != null && cameraCaminho.socket.DadosRecebidos.Any() ?
cameraCaminho.socket.DadosRecebidos.Last() :
new CameraAnguloModel() { angulo = 0, distancia_direita = 0, distancia_esquerda = 0 };
lblDistanciaEsquerda.Text = "Distancia da Esquerda: " + leitura.distancia_esquerda.ToString("000") + " px";
lblDistanciaDireita.Text = "Distancia da Direita: " + leitura.distancia_direita.ToString("000") + " px";
lblUltimaLeituraRua.Text = "Ultima Leitura Rua: " + FuncoesGlobais.TimestampToDate(leitura.timestamp);
pnlInclinacao.Invalidate();
Variaveis.OperacaoEmAndamento.Controle.Angulo =
leitura.angulo > Variaveis.OperacaoEmAndamento.Controle.Angulo_Max ? Variaveis.OperacaoEmAndamento.Controle.Angulo_Max :
leitura.angulo < Variaveis.OperacaoEmAndamento.Controle.Angulo_Min ? Variaveis.OperacaoEmAndamento.Controle.Angulo_Min :
leitura.angulo;
}
AtualizaLeituraCameraCaminho();
AtualizarGrafico();
Variaveis.OperacaoEmAndamento.AtualizarDadosControle();
AtualizarInformacoesGerais();
}
@ -479,23 +494,101 @@ namespace AgroBase.Forms.Operacoes
}
}
CameraSolo.ErvasNoRadar = Verdes.Count();
for (int i = 0; i < BicosPorCamera; i++)
{
int iBico = i + (CameraSolo.Posicao * BicosPorCamera);
if (Atuador.Dados.BicosPulverizadores[iBico].Atuado && BicosAnteriores[i] != Atuador.Dados.BicosPulverizadores[iBico].Atuado)
{
Variaveis.OperacaoEmAndamento.AtuacoesPorBico[iBico]++;
Variaveis.OperacaoEmAndamento.Sensoriamento.AtuacoesPorBico[iBico]++;
}
}
lblUltimaLeituraSolo.Text = "Ultima Leitura Solo: " + FuncoesGlobais.TimestampToDate(leitura.timestamp);
pnlAtuadores.Invalidate();
Variaveis.OperacaoEmAndamento.Controle.BicosAtuados = Atuador.Dados.BicosPulverizadores;
Variaveis.OperacaoEmAndamento.Controle.RPM = !Verdes.Any() ?
AtualizaInformacoesControleOperacao();
}
}
private void AtualizaLeituraCameraCaminho()
{
try
{
var contornosJson = File.ReadAllText("Python/Output/" + cameraCaminho.ArquivoLeitura);
cameraCaminho.Leituras = JsonConvert.DeserializeObject<CameraDeepLabV3PlusModel[]>(contornosJson).ToList();
pnlCaminho.Invalidate();
if (cameraCaminho.PontosExtremos.Any())
{
double esq_CA = cameraCaminho.PontosExtremos[2].X - cameraCaminho.PontosExtremos[1].X;
double esq_CO = cameraCaminho.PontosExtremos[1].Y - cameraCaminho.PontosExtremos[2].Y;
double esq_AG = Math.Atan(esq_CO / esq_CA) * (180 / Math.PI);
double dir_CA = cameraCaminho.PontosExtremos[4].X - cameraCaminho.PontosExtremos[3].X;
double dir_CO = cameraCaminho.PontosExtremos[4].Y - cameraCaminho.PontosExtremos[3].Y;
double dir_AG = Math.Atan(dir_CO / dir_CA) * (180 / Math.PI);
cameraCaminho.Angulo = esq_AG - dir_AG;
cameraCaminho.AnguloDireito = dir_AG;
cameraCaminho.AnguloEsquerdo = esq_AG;
}
else
{
cameraCaminho.Angulo = 0;
cameraCaminho.AnguloDireito = 0;
cameraCaminho.AnguloEsquerdo = 0;
}
pnlInclinacao.Invalidate();
AtualizaInformacoesControleOperacao();
}
catch
{
}
}
private void AtualizaInformacoesControleOperacao()
{
TimeSpan tempo = TimeSpan.FromTicks(DateTime.Now.Ticks - Variaveis.OperacaoEmAndamento.TimestampInicio);
bool operacaoEmAndamento = tempo.Seconds > Variaveis.OperacaoEmAndamento.TempoIniciarOperacao;
var BicosNaoAtuados = Atuador.Dados.BicosPulverizadores.ToList();
BicosNaoAtuados.ForEach(x => x.Atuado = false);
Variaveis.OperacaoEmAndamento.Sensoriamento.ErvasNoRadar = CamerasSolo.Sum(x => x.ErvasNoRadar);
Variaveis.OperacaoEmAndamento.Sensoriamento.ErvasIdentificadas = Variaveis.OperacaoEmAndamento.Sensoriamento.AtuacoesPorBico.Sum();
if (!operacaoEmAndamento)
{
Variaveis.OperacaoEmAndamento.Controle.BicosAtuados = BicosNaoAtuados.ToList();
Variaveis.OperacaoEmAndamento.Controle.RPM = 0;
Variaveis.OperacaoEmAndamento.Controle.Angulo = 0;
}
else
{
Variaveis.OperacaoEmAndamento.Controle.BicosAtuados =
!chbATUativo.Checked ? BicosNaoAtuados
: Atuador.Dados.BicosPulverizadores;
Variaveis.OperacaoEmAndamento.Controle.RPM =
!chbMOVativo.Checked ? 0 :
!cameraCaminho.PontosExtremos.Any() ? 0 :
Variaveis.OperacaoEmAndamento.Sensoriamento.ErvasNoRadar == 0 ?
Variaveis.OperacaoEmAndamento.Controle.RPM_Max :
Variaveis.OperacaoEmAndamento.Controle.RPM_Min;
Variaveis.OperacaoEmAndamento.Controle.Angulo =
!chbDIRativo.Checked ? 0 :
cameraCaminho.Angulo > Variaveis.OperacaoEmAndamento.Controle.Angulo_Max ? Variaveis.OperacaoEmAndamento.Controle.Angulo_Max :
cameraCaminho.Angulo < Variaveis.OperacaoEmAndamento.Controle.Angulo_Min ? Variaveis.OperacaoEmAndamento.Controle.Angulo_Min :
cameraCaminho.Angulo;
}
Variaveis.OperacaoEmAndamento.AtualizarDadosControle();
}
private void pnlAtuadores_Paint(object sender, PaintEventArgs e)
@ -535,7 +628,7 @@ namespace AgroBase.Forms.Operacoes
// Define a string que representa a atuacao do bico
string bicoAtuacao = Variaveis.OperacaoEmAndamento.AtuacoesPorBico[i].ToString("000");
string bicoAtuacao = Variaveis.OperacaoEmAndamento.Sensoriamento.AtuacoesPorBico[i].ToString("000");
// Define a fonte para o texto
Font fontA = new Font("Arial", 8, FontStyle.Bold);
// Mede o tamanho do texto
@ -628,20 +721,26 @@ namespace AgroBase.Forms.Operacoes
private void AtualizarInformacoesGerais()
{
lblDistanciaPercorrida.Text = "Distancia Percorrida: " + Variaveis.OperacaoEmAndamento.DistanciaPercorrida + " m";
lblDistanciaEsquerda.Text = "Distancia da Esquerda: " + Variaveis.OperacaoEmAndamento.Sensoriamento.DistanciaEsquerda.ToString("0.00") + " cm";
lblDistanciaDireita.Text = "Distancia da Direita: " + Variaveis.OperacaoEmAndamento.Sensoriamento.DistanciaDireita.ToString("0.00") + " cm";
lblUltimaLeituraRua.Text = "Ultima Leitura Rua: " + FuncoesGlobais.TimestampToDate(cameraCaminho.Leituras.FirstOrDefault().timestamp);
lblDistanciaPercorrida.Text = "Distancia Percorrida: " + Variaveis.OperacaoEmAndamento.Sensoriamento.DistanciaPercorrida.ToString("0.00") + " m";
TimeSpan tempo = TimeSpan.FromTicks((Variaveis.OperacaoEmAndamento.TimestampFim > 0 ? Variaveis.OperacaoEmAndamento.TimestampFim : DateTime.Now.Ticks) - Variaveis.OperacaoEmAndamento.TimestampInicio);
lblTempoOperacao.Text = "Tempo de Operação: " + tempo.Hours.ToString("00") + ":" + tempo.Minutes.ToString("00") + ":" + tempo.Seconds.ToString("00");
lblVelocidadeMedia.Text = "Velocidade Média: " + Variaveis.OperacaoEmAndamento.VelocidadeMedia.ToString("0.00") + " km/h";
lblErvasIdentificadas.Text = "Ervas Identificadas: " + Variaveis.OperacaoEmAndamento.ErvasIdentificadas.ToString("000");
lblErvasIdentificadas.Text = "Herbicida Aplicado: " + Variaveis.OperacaoEmAndamento.HerbicidaConsumido.ToString("0.000") + " L";
lblHerbicidaPorErva.Text = "Herbicida por Erva: " + Variaveis.OperacaoEmAndamento.HerbicidaPorErva.ToString("0.000") + " mL";
lblBateriaConsumida.Text = "Bateria Consumida: " + Variaveis.OperacaoEmAndamento.BateriaConsumida.ToString("0.00") + "%";
lblVelocidadeMedia.Text = "Velocidade Média: " + Variaveis.OperacaoEmAndamento.Sensoriamento.VelocidadeMedia.ToString("0.00") + " km/h";
lblErvasIdentificadas.Text = "Ervas Identificadas: " + Variaveis.OperacaoEmAndamento.Sensoriamento.ErvasIdentificadas.ToString("000");
lblHerbicidaAplicado.Text = "Herbicida Aplicado: " + Variaveis.OperacaoEmAndamento.Sensoriamento.HerbicidaConsumido.ToString("0.000") + " L";
lblHerbicidaPorErva.Text = "Herbicida por Erva: " + Variaveis.OperacaoEmAndamento.Sensoriamento.HerbicidaPorErva.ToString("0.000") + " mL";
lblBateriaConsumida.Text = "Bateria Consumida: " + Variaveis.OperacaoEmAndamento.Sensoriamento.BateriaConsumida.ToString("0.00") + "%";
lblPressao.Text = "P: " + Atuador.Dados.PressaoLinha.ToString("0.00") + " psi";
pgbReservatorio.Value = Convert.ToInt32(Atuador.Dados.PercentualReservatorio);
lblPorcentagemReservatorio.Text = "Reservatório: " + Atuador.Dados.PercentualReservatorio.ToString("0.00") + "%";
pgbProgresso.Value = Convert.ToInt32(Variaveis.OperacaoEmAndamento.ProgressoPercurso);
lblPorcentagemProgresso.Text = "Progresso: " + Variaveis.OperacaoEmAndamento.ProgressoPercurso.ToString("0.00") + "%";
pgbProgresso.Value = Convert.ToInt32(Variaveis.OperacaoEmAndamento.Sensoriamento.ProgressoPercurso);
lblPorcentagemProgresso.Text = "Progresso: " + Variaveis.OperacaoEmAndamento.Sensoriamento.ProgressoPercurso.ToString("0.00") + "%";
}
private void pnlInclinacao_Paint(object sender, PaintEventArgs e)
@ -659,7 +758,7 @@ namespace AgroBase.Forms.Operacoes
// Suponha que você tenha uma variável que armazene essa informação.
// Por exemplo, o ângulo de 0 graus pode ser diretamente para cima,
// e os ângulos aumentam no sentido horário.
float anguloInclinacao = cameraCaminho.socket != null && cameraCaminho.socket.DadosRecebidos.Any() ? (float)cameraCaminho.socket.DadosRecebidos.Last().angulo : 0;
float anguloInclinacao = (float)cameraCaminho.Angulo;
Graphics g = e.Graphics;
// Desenha o círculo da bússola
@ -712,69 +811,86 @@ namespace AgroBase.Forms.Operacoes
private void UpdatePath(float angle, float distance)
private void pnlCaminho_Paint(object sender, PaintEventArgs e)
{
// Atualiza o ângulo atual com base na nova leitura
float currentAngle = angle;
Panel pnlContornos = (Panel)sender;
if (cameraCaminho.Leituras == null || cameraCaminho.Leituras.Count == 0) return;
// Converte o ângulo em radianos para calcular a nova posição
float angleRadians = currentAngle * (float)Math.PI / 180.0f;
Graphics graphics = e.Graphics;
graphics.Clear(pnlContornos.BackColor); // Limpa o fundo
// Calcula a nova posição com base no ângulo e na distância
currentPosition = new PointF(
currentPosition.X + distance * (float)Math.Cos(angleRadians),
currentPosition.Y + distance * (float)Math.Sin(angleRadians)
);
// Determina as dimensões máximas dos contornos
float larguraMaxContornos = 512; // Substitua pelo valor real
float alturaMaxContornos = 512; // Substitua pelo valor real
// Adiciona a nova posição na lista de pontos
pathPoints.Add(currentPosition);
// Proporção de escala baseada no tamanho do Panel e nas dimensões dos contornos
float proporcaoX = pnlContornos.Width / larguraMaxContornos;
float proporcaoY = pnlContornos.Height / alturaMaxContornos;
float escala = Math.Min(proporcaoX, proporcaoY); // Mantém a proporção sem distorcer
// Redesenha o painel
pnlMapa.Invalidate();
}
// Calcula o novo tamanho dos contornos após o redimensionamento
float novaLargura = larguraMaxContornos * escala;
float novaAltura = alturaMaxContornos * escala;
private void pnlMapa_Paint(object sender, PaintEventArgs e)
{
if (pathPoints.Count < 2) return; // Necessário pelo menos 2 pontos para desenhar um caminho
// Calcula o deslocamento para centralizar os contornos no Panel
float deslocamentoX = (pnlContornos.Width - novaLargura) / 2;
float deslocamentoY = (pnlContornos.Height - novaAltura) / 2;
Graphics g = e.Graphics;
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
// Desenha o caminho
for (int i = 1; i < pathPoints.Count; i++)
List<Point> pontosCamera = new List<Point>();
var Classe = cameraCaminho.ClassMap.FirstOrDefault(x => x.Key == "rua");
foreach (var Leitura in cameraCaminho.Leituras.OrderByDescending(x => x.timestamp))
{
g.DrawLine(Pens.Black, pathPoints[i - 1], pathPoints[i]);
foreach (var cameraClass in Leitura.Classes.Where(x => x.Classe == Classe.Key))
{
if (cameraClass.Contornos == null || cameraClass.Contornos.Length == 0) continue;
using (Pen pen = new Pen(Color.Blue, 2))
{
for (int i = 0; i < cameraClass.Contornos.Length - 1; i++)
{
Point contorno = new Point() { X = cameraClass.Contornos[i][0], Y = cameraClass.Contornos[i][1] };
Point contornoP = new Point() { X = cameraClass.Contornos[i + 1][0], Y = cameraClass.Contornos[i + 1][1] };
// Aplica a escala e o deslocamento às coordenadas
Point start = new Point((int)(contorno.X * escala + deslocamentoX), (int)(contorno.Y * escala + deslocamentoY));
Point end = new Point((int)(contornoP.X * escala + deslocamentoX), (int)(contornoP.Y * escala + deslocamentoY));
graphics.DrawLine(pen, start, end);
pontosCamera.Add(contorno);
}
// Se necessário, fechar o contorno conectando o último ponto ao primeiro
if (cameraClass.Contornos.Length > 1)
{
var primeiro = cameraClass.Contornos.First();
var ultimo = cameraClass.Contornos.Last();
Point start = new Point((int)(ultimo[0] * escala + deslocamentoX), (int)(ultimo[1] * escala + deslocamentoY));
Point end = new Point((int)(primeiro[0] * escala + deslocamentoX), (int)(primeiro[1] * escala + deslocamentoY));
graphics.DrawLine(pen, start, end);
}
}
}
// Plotar apenas a ultima leitura do json
break;
}
using (Pen pen = new Pen(Classe.Value, 2))
{
cameraCaminho.PontosExtremos = CameraCaminhoModel.DefinirPontosExtremos(pontosCamera);
for (int i = 0; i < cameraCaminho.PontosExtremos.Count - 1; i++)
{
// Aplica a escala e o deslocamento às coordenadas
Point start = new Point((int)(cameraCaminho.PontosExtremos[i].X * escala + deslocamentoX), (int)(cameraCaminho.PontosExtremos[i].Y * escala + deslocamentoY));
Point end = new Point((int)(cameraCaminho.PontosExtremos[i + 1].X * escala + deslocamentoX), (int)(cameraCaminho.PontosExtremos[i + 1].Y * escala + deslocamentoY));
graphics.DrawLine(pen, start, end);
}
}
}
private void btnDesenharMapa_Click(object sender, EventArgs e)
{
if (tmrMapa.Enabled)
{
btnDesenharMapa.Text = "Desenhar";
tmrMapa.Stop();
}
else
{
btnDesenharMapa.Text = "Parar";
currentPosition = new PointF(pnlMapa.Width / 2, pnlMapa.Height / 2);
tmrMapa = new Timer() { Interval = 1000 };
tmrMapa.Tick -= TmrMapa_Tick;
tmrMapa.Tick += TmrMapa_Tick;
tmrMapa.Start();
}
}
Timer tmrMapa = new Timer();
float distance = 0;
private void TmrMapa_Tick(object sender, EventArgs e)
{
distance = 5;
float angle = new Random().Next(-200, 200);
//distance = (float)Variaveis.OperacaoEmAndamento.DistanciaPercorrida - distance;
//angle = cameraCaminho.socket != null && cameraCaminho.socket.DadosRecebidos.Any() ? (float)cameraCaminho.socket.DadosRecebidos.Last().angulo : 0;
UpdatePath(angle, distance);
}
}
}

View File

@ -20,9 +20,9 @@ namespace AgroBase.Forms.Sensoriamento
private Timer tmrLeitura;
private int MaxLeituras = 10;
private string VideoPorta = VariaveisPortas.CameraCaminho;
private string VideoPorta = VariaveisPortas.CameraCaminho.ToString();
private string VideoUrl = "line_angle";
private string SocketPorta = VariaveisPortas.SocketCaminho;
private string SocketPorta = VariaveisPortas.SocketCaminho.ToString();
private bool MostrarDebug = true;
private string ArquivoLeitura = "leitura_angulo";

View File

@ -35,35 +35,43 @@
this.lblCorrente = new System.Windows.Forms.Label();
this.lblTemperatura = new System.Windows.Forms.Label();
this.gridsTMP = new System.Windows.Forms.DataGridView();
this.lblPressao = new System.Windows.Forms.Label();
this.gridsULT = new System.Windows.Forms.DataGridView();
this.lblFluxo = new System.Windows.Forms.Label();
this.gridsFLX = new System.Windows.Forms.DataGridView();
this.lblMassa = new System.Windows.Forms.Label();
this.gridsMAS = new System.Windows.Forms.DataGridView();
this.lblUltrassom = new System.Windows.Forms.Label();
this.gridsPRS = new System.Windows.Forms.DataGridView();
((System.ComponentModel.ISupportInitialize)(this.gridsTEN)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.gridsCOR)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.gridsTMP)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.gridsULT)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.gridsFLX)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.gridsMAS)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.gridsPRS)).BeginInit();
this.SuspendLayout();
//
// gridsTEN
//
this.gridsTEN.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.gridsTEN.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.gridsTEN.Location = new System.Drawing.Point(15, 25);
this.gridsTEN.Name = "gridsTEN";
this.gridsTEN.Size = new System.Drawing.Size(418, 124);
this.gridsTEN.Size = new System.Drawing.Size(450, 124);
this.gridsTEN.TabIndex = 1;
//
// gridsCOR
//
this.gridsCOR.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.gridsCOR.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.gridsCOR.Location = new System.Drawing.Point(15, 168);
this.gridsCOR.Name = "gridsCOR";
this.gridsCOR.Size = new System.Drawing.Size(418, 124);
this.gridsCOR.Size = new System.Drawing.Size(450, 124);
this.gridsCOR.TabIndex = 1;
//
// btnSalvar
//
this.btnSalvar.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.btnSalvar.Location = new System.Drawing.Point(358, 441);
this.btnSalvar.Location = new System.Drawing.Point(867, 554);
this.btnSalvar.Name = "btnSalvar";
this.btnSalvar.Size = new System.Drawing.Size(75, 23);
this.btnSalvar.TabIndex = 3;
@ -100,19 +108,93 @@
//
// gridsTMP
//
this.gridsTMP.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.gridsTMP.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.gridsTMP.Location = new System.Drawing.Point(15, 311);
this.gridsTMP.Name = "gridsTMP";
this.gridsTMP.Size = new System.Drawing.Size(418, 124);
this.gridsTMP.Size = new System.Drawing.Size(450, 124);
this.gridsTMP.TabIndex = 6;
//
// lblPressao
//
this.lblPressao.AutoSize = true;
this.lblPressao.Location = new System.Drawing.Point(485, 9);
this.lblPressao.Name = "lblPressao";
this.lblPressao.Size = new System.Drawing.Size(45, 13);
this.lblPressao.TabIndex = 9;
this.lblPressao.Text = "Pressão";
//
// gridsULT
//
this.gridsULT.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.gridsULT.Location = new System.Drawing.Point(15, 454);
this.gridsULT.Name = "gridsULT";
this.gridsULT.Size = new System.Drawing.Size(450, 124);
this.gridsULT.TabIndex = 8;
//
// lblFluxo
//
this.lblFluxo.AutoSize = true;
this.lblFluxo.Location = new System.Drawing.Point(485, 152);
this.lblFluxo.Name = "lblFluxo";
this.lblFluxo.Size = new System.Drawing.Size(71, 13);
this.lblFluxo.TabIndex = 11;
this.lblFluxo.Text = "Fluxo (Vazão)";
//
// gridsFLX
//
this.gridsFLX.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.gridsFLX.Location = new System.Drawing.Point(488, 168);
this.gridsFLX.Name = "gridsFLX";
this.gridsFLX.Size = new System.Drawing.Size(450, 124);
this.gridsFLX.TabIndex = 10;
//
// lblMassa
//
this.lblMassa.AutoSize = true;
this.lblMassa.Location = new System.Drawing.Point(485, 295);
this.lblMassa.Name = "lblMassa";
this.lblMassa.Size = new System.Drawing.Size(155, 13);
this.lblMassa.TabIndex = 13;
this.lblMassa.Text = "Massa (Reservatório Herbicida)";
//
// gridsMAS
//
this.gridsMAS.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.gridsMAS.Location = new System.Drawing.Point(488, 311);
this.gridsMAS.Name = "gridsMAS";
this.gridsMAS.Size = new System.Drawing.Size(450, 124);
this.gridsMAS.TabIndex = 12;
//
// lblUltrassom
//
this.lblUltrassom.AutoSize = true;
this.lblUltrassom.Location = new System.Drawing.Point(12, 438);
this.lblUltrassom.Name = "lblUltrassom";
this.lblUltrassom.Size = new System.Drawing.Size(106, 13);
this.lblUltrassom.TabIndex = 15;
this.lblUltrassom.Text = "Ultrassom (Distancia)";
//
// gridsPRS
//
this.gridsPRS.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.gridsPRS.Location = new System.Drawing.Point(488, 25);
this.gridsPRS.Name = "gridsPRS";
this.gridsPRS.Size = new System.Drawing.Size(450, 124);
this.gridsPRS.TabIndex = 14;
//
// frmSenConfig
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(445, 472);
this.ClientSize = new System.Drawing.Size(954, 585);
this.Controls.Add(this.lblUltrassom);
this.Controls.Add(this.gridsPRS);
this.Controls.Add(this.lblMassa);
this.Controls.Add(this.gridsMAS);
this.Controls.Add(this.lblFluxo);
this.Controls.Add(this.gridsFLX);
this.Controls.Add(this.lblPressao);
this.Controls.Add(this.gridsULT);
this.Controls.Add(this.lblTemperatura);
this.Controls.Add(this.gridsTMP);
this.Controls.Add(this.lblCorrente);
@ -128,6 +210,10 @@
((System.ComponentModel.ISupportInitialize)(this.gridsTEN)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.gridsCOR)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.gridsTMP)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.gridsULT)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.gridsFLX)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.gridsMAS)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.gridsPRS)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
@ -141,5 +227,13 @@
private System.Windows.Forms.Label lblCorrente;
private System.Windows.Forms.Label lblTemperatura;
private System.Windows.Forms.DataGridView gridsTMP;
private System.Windows.Forms.Label lblPressao;
private System.Windows.Forms.DataGridView gridsULT;
private System.Windows.Forms.Label lblFluxo;
private System.Windows.Forms.DataGridView gridsFLX;
private System.Windows.Forms.Label lblMassa;
private System.Windows.Forms.DataGridView gridsMAS;
private System.Windows.Forms.Label lblUltrassom;
private System.Windows.Forms.DataGridView gridsPRS;
}
}

View File

@ -1,6 +1,7 @@
using AgroBase.Comum;
using AgroBase.Models;
using AgroBase.Models.Modules;
using AgroBase.Services;
using System;
using System.Collections.Generic;
using System.ComponentModel;
@ -17,7 +18,10 @@ namespace AgroBase.Forms.Sensoriamento
{
public partial class frmSenConfig : Form
{
DispositivosService<SensoriamentoModel> Disp = (DispositivosService<SensoriamentoModel>)Variaveis.DispositivosConectados.FirstOrDefault(x => x.Dispositivo == T_Code.Sen);
IDispositivosService Disp = null;
public T_Code Dispositivo = T_Code.Sen;
List<SensorModel> Sensores = new List<SensorModel>();
int ParametrosComecamEm = 3;
public frmSenConfig()
@ -27,11 +31,26 @@ namespace AgroBase.Forms.Sensoriamento
private void frmSenConfig_Load(object sender, EventArgs e)
{
Disp = Variaveis.DispositivosConectados.FirstOrDefault(x => x.Dispositivo == Dispositivo);
if (Disp == null)
{
return;
}
switch (Dispositivo)
{
case T_Code.Sen:
{
Sensores = ((SensoriamentoModel)Disp.Dados).Sensores.ToList();
break;
}
case T_Code.Atu:
{
Sensores = ((AtuadorModel)Disp.Dados).Sensores.ToList();
break;
}
}
PopulaParametrosSensor();
PreencheParametrosSensores();
@ -39,7 +58,7 @@ namespace AgroBase.Forms.Sensoriamento
private void PopulaParametrosSensor()
{
foreach (var Sensor in Disp.Dados.Sensores)
foreach (var Sensor in Sensores)
{
string gridName = "grid" + Enum.GetName(typeof(S_Code), Sensor.Componente);
DataGridView grid = this.Controls.OfType<DataGridView>().ToList().FirstOrDefault(x => x.Name == gridName);
@ -60,7 +79,7 @@ namespace AgroBase.Forms.Sensoriamento
private void PreencheParametrosSensores()
{
foreach (var Sensor in Disp.Dados.Sensores)
foreach (var Sensor in Sensores)
{
string gridName = "grid" + Enum.GetName(typeof(S_Code), Sensor.Componente);
DataGridView grid = this.Controls.OfType<DataGridView>().ToList().FirstOrDefault(x => x.Name == gridName);
@ -93,7 +112,7 @@ namespace AgroBase.Forms.Sensoriamento
return;
}
foreach (var Sensor in Disp.Dados.Sensores)
foreach (var Sensor in Sensores)
{
string gridName = "grid" + Enum.GetName(typeof(S_Code), Sensor.Componente);
DataGridView grid = this.Controls.OfType<DataGridView>().ToList().FirstOrDefault(x => x.Name == gridName);
@ -117,7 +136,24 @@ namespace AgroBase.Forms.Sensoriamento
}
}
Disp.SalvarParametros(Disp.Dados);
switch (Dispositivo)
{
case T_Code.Sen:
{
var _Disp = (DispositivosService<SensoriamentoModel>)Variaveis.DispositivosConectados.FirstOrDefault(x => x.Dispositivo == Dispositivo);
_Disp.Dados.Sensores = Sensores.ToList();
_Disp.SalvarParametros(_Disp.Dados);
break;
}
case T_Code.Atu:
{
var _Disp = (DispositivosService<AtuadorModel>)Variaveis.DispositivosConectados.FirstOrDefault(x => x.Dispositivo == Dispositivo);
_Disp.Dados.Sensores = Sensores.ToList();
_Disp.SalvarParametros(_Disp.Dados);
break;
}
}
}
}
}

View File

@ -43,6 +43,7 @@ namespace AgroBase.Forms
System.Windows.Forms.DataVisualization.Charting.Series series4 = new System.Windows.Forms.DataVisualization.Charting.Series();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmAcompanhamento));
this.pnlFundo = new System.Windows.Forms.Panel();
this.lblTemperatura = new System.Windows.Forms.Label();
this.lblCorrente = new System.Windows.Forms.Label();
this.lblTensao = new System.Windows.Forms.Label();
this.lblDistanciaParcial = new System.Windows.Forms.Label();
@ -62,7 +63,7 @@ namespace AgroBase.Forms
this.chartDF = new System.Windows.Forms.DataVisualization.Charting.Chart();
this.chartEF = new System.Windows.Forms.DataVisualization.Charting.Chart();
this.picRobo = new System.Windows.Forms.PictureBox();
this.lblDTM_Umidade = new System.Windows.Forms.Label();
this.lblDTM_Corrente = new System.Windows.Forms.Label();
this.lblDTM_Temperatura = new System.Windows.Forms.Label();
this.lblDTM_Sentido = new System.Windows.Forms.Label();
this.lblDTM_SentidoSP = new System.Windows.Forms.Label();
@ -70,7 +71,7 @@ namespace AgroBase.Forms
this.lblDTM_Potencia = new System.Windows.Forms.Label();
this.lblDTM_Velocidade = new System.Windows.Forms.Label();
this.lblDTM_RPM = new System.Windows.Forms.Label();
this.lblDFM_Umidade = new System.Windows.Forms.Label();
this.lblDFM_Corrente = new System.Windows.Forms.Label();
this.lblDFM_Temperatura = new System.Windows.Forms.Label();
this.lblDFM_Sentido = new System.Windows.Forms.Label();
this.lblDFM_SentidoSP = new System.Windows.Forms.Label();
@ -78,7 +79,7 @@ namespace AgroBase.Forms
this.lblDFM_Potencia = new System.Windows.Forms.Label();
this.lblDFM_Velocidade = new System.Windows.Forms.Label();
this.lblDFM_RPM = new System.Windows.Forms.Label();
this.lblETM_Umidade = new System.Windows.Forms.Label();
this.lblETM_Corrente = new System.Windows.Forms.Label();
this.lblETM_Temperatura = new System.Windows.Forms.Label();
this.lblETM_Sentido = new System.Windows.Forms.Label();
this.lblETM_SentidoSP = new System.Windows.Forms.Label();
@ -86,7 +87,7 @@ namespace AgroBase.Forms
this.lblETM_Potencia = new System.Windows.Forms.Label();
this.lblETM_Velocidade = new System.Windows.Forms.Label();
this.lblETM_RPM = new System.Windows.Forms.Label();
this.lblEFM_Umidade = new System.Windows.Forms.Label();
this.lblEFM_Corrente = new System.Windows.Forms.Label();
this.lblEFM_Temperatura = new System.Windows.Forms.Label();
this.lblEFM_Sentido = new System.Windows.Forms.Label();
this.lblEFM_SentidoSP = new System.Windows.Forms.Label();
@ -126,7 +127,6 @@ namespace AgroBase.Forms
this.btnEFReferenciar = new System.Windows.Forms.Button();
this.lblM1 = new System.Windows.Forms.Label();
this.picEF = new System.Windows.Forms.PictureBox();
this.lblTemperatura = new System.Windows.Forms.Label();
this.pnlFundo.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.chartET)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.chartDT)).BeginInit();
@ -163,7 +163,7 @@ namespace AgroBase.Forms
this.pnlFundo.Controls.Add(this.chartDF);
this.pnlFundo.Controls.Add(this.chartEF);
this.pnlFundo.Controls.Add(this.picRobo);
this.pnlFundo.Controls.Add(this.lblDTM_Umidade);
this.pnlFundo.Controls.Add(this.lblDTM_Corrente);
this.pnlFundo.Controls.Add(this.lblDTM_Temperatura);
this.pnlFundo.Controls.Add(this.lblDTM_Sentido);
this.pnlFundo.Controls.Add(this.lblDTM_SentidoSP);
@ -171,7 +171,7 @@ namespace AgroBase.Forms
this.pnlFundo.Controls.Add(this.lblDTM_Potencia);
this.pnlFundo.Controls.Add(this.lblDTM_Velocidade);
this.pnlFundo.Controls.Add(this.lblDTM_RPM);
this.pnlFundo.Controls.Add(this.lblDFM_Umidade);
this.pnlFundo.Controls.Add(this.lblDFM_Corrente);
this.pnlFundo.Controls.Add(this.lblDFM_Temperatura);
this.pnlFundo.Controls.Add(this.lblDFM_Sentido);
this.pnlFundo.Controls.Add(this.lblDFM_SentidoSP);
@ -179,7 +179,7 @@ namespace AgroBase.Forms
this.pnlFundo.Controls.Add(this.lblDFM_Potencia);
this.pnlFundo.Controls.Add(this.lblDFM_Velocidade);
this.pnlFundo.Controls.Add(this.lblDFM_RPM);
this.pnlFundo.Controls.Add(this.lblETM_Umidade);
this.pnlFundo.Controls.Add(this.lblETM_Corrente);
this.pnlFundo.Controls.Add(this.lblETM_Temperatura);
this.pnlFundo.Controls.Add(this.lblETM_Sentido);
this.pnlFundo.Controls.Add(this.lblETM_SentidoSP);
@ -187,7 +187,7 @@ namespace AgroBase.Forms
this.pnlFundo.Controls.Add(this.lblETM_Potencia);
this.pnlFundo.Controls.Add(this.lblETM_Velocidade);
this.pnlFundo.Controls.Add(this.lblETM_RPM);
this.pnlFundo.Controls.Add(this.lblEFM_Umidade);
this.pnlFundo.Controls.Add(this.lblEFM_Corrente);
this.pnlFundo.Controls.Add(this.lblEFM_Temperatura);
this.pnlFundo.Controls.Add(this.lblEFM_Sentido);
this.pnlFundo.Controls.Add(this.lblEFM_SentidoSP);
@ -234,6 +234,17 @@ namespace AgroBase.Forms
this.pnlFundo.Size = new System.Drawing.Size(1484, 749);
this.pnlFundo.TabIndex = 0;
//
// lblTemperatura
//
this.lblTemperatura.AutoSize = true;
this.lblTemperatura.Font = new System.Drawing.Font("Microsoft Sans Serif", 6.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.lblTemperatura.Location = new System.Drawing.Point(639, 631);
this.lblTemperatura.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.lblTemperatura.Name = "lblTemperatura";
this.lblTemperatura.Size = new System.Drawing.Size(198, 12);
this.lblTemperatura.TabIndex = 173;
this.lblTemperatura.Text = "Temp atual: 0,00ºC - Mín: 0,00ºC - Máx: 0,00ºC";
//
// lblCorrente
//
this.lblCorrente.AutoSize = true;
@ -463,15 +474,15 @@ namespace AgroBase.Forms
this.picRobo.TabIndex = 158;
this.picRobo.TabStop = false;
//
// lblDTM_Umidade
// lblDTM_Corrente
//
this.lblDTM_Umidade.AutoSize = true;
this.lblDTM_Umidade.Location = new System.Drawing.Point(1273, 790);
this.lblDTM_Umidade.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.lblDTM_Umidade.Name = "lblDTM_Umidade";
this.lblDTM_Umidade.Size = new System.Drawing.Size(69, 13);
this.lblDTM_Umidade.TabIndex = 157;
this.lblDTM_Umidade.Text = "Umidade: 0%";
this.lblDTM_Corrente.AutoSize = true;
this.lblDTM_Corrente.Location = new System.Drawing.Point(1273, 790);
this.lblDTM_Corrente.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.lblDTM_Corrente.Name = "lblDTM_Corrente";
this.lblDTM_Corrente.Size = new System.Drawing.Size(66, 13);
this.lblDTM_Corrente.TabIndex = 157;
this.lblDTM_Corrente.Text = "Corrente: 0A";
//
// lblDTM_Temperatura
//
@ -543,15 +554,15 @@ namespace AgroBase.Forms
this.lblDTM_RPM.TabIndex = 150;
this.lblDTM_RPM.Text = "RPM: 0";
//
// lblDFM_Umidade
// lblDFM_Corrente
//
this.lblDFM_Umidade.AutoSize = true;
this.lblDFM_Umidade.Location = new System.Drawing.Point(1273, 384);
this.lblDFM_Umidade.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.lblDFM_Umidade.Name = "lblDFM_Umidade";
this.lblDFM_Umidade.Size = new System.Drawing.Size(69, 13);
this.lblDFM_Umidade.TabIndex = 149;
this.lblDFM_Umidade.Text = "Umidade: 0%";
this.lblDFM_Corrente.AutoSize = true;
this.lblDFM_Corrente.Location = new System.Drawing.Point(1273, 384);
this.lblDFM_Corrente.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.lblDFM_Corrente.Name = "lblDFM_Corrente";
this.lblDFM_Corrente.Size = new System.Drawing.Size(66, 13);
this.lblDFM_Corrente.TabIndex = 149;
this.lblDFM_Corrente.Text = "Corrente: 0A";
//
// lblDFM_Temperatura
//
@ -623,15 +634,15 @@ namespace AgroBase.Forms
this.lblDFM_RPM.TabIndex = 142;
this.lblDFM_RPM.Text = "RPM: 0";
//
// lblETM_Umidade
// lblETM_Corrente
//
this.lblETM_Umidade.AutoSize = true;
this.lblETM_Umidade.Location = new System.Drawing.Point(10, 790);
this.lblETM_Umidade.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.lblETM_Umidade.Name = "lblETM_Umidade";
this.lblETM_Umidade.Size = new System.Drawing.Size(69, 13);
this.lblETM_Umidade.TabIndex = 141;
this.lblETM_Umidade.Text = "Umidade: 0%";
this.lblETM_Corrente.AutoSize = true;
this.lblETM_Corrente.Location = new System.Drawing.Point(10, 790);
this.lblETM_Corrente.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.lblETM_Corrente.Name = "lblETM_Corrente";
this.lblETM_Corrente.Size = new System.Drawing.Size(66, 13);
this.lblETM_Corrente.TabIndex = 141;
this.lblETM_Corrente.Text = "Corrente: 0A";
//
// lblETM_Temperatura
//
@ -703,15 +714,15 @@ namespace AgroBase.Forms
this.lblETM_RPM.TabIndex = 134;
this.lblETM_RPM.Text = "RPM: 0";
//
// lblEFM_Umidade
// lblEFM_Corrente
//
this.lblEFM_Umidade.AutoSize = true;
this.lblEFM_Umidade.Location = new System.Drawing.Point(10, 384);
this.lblEFM_Umidade.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.lblEFM_Umidade.Name = "lblEFM_Umidade";
this.lblEFM_Umidade.Size = new System.Drawing.Size(69, 13);
this.lblEFM_Umidade.TabIndex = 133;
this.lblEFM_Umidade.Text = "Umidade: 0%";
this.lblEFM_Corrente.AutoSize = true;
this.lblEFM_Corrente.Location = new System.Drawing.Point(10, 384);
this.lblEFM_Corrente.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.lblEFM_Corrente.Name = "lblEFM_Corrente";
this.lblEFM_Corrente.Size = new System.Drawing.Size(66, 13);
this.lblEFM_Corrente.TabIndex = 133;
this.lblEFM_Corrente.Text = "Corrente: 0A";
//
// lblEFM_Temperatura
//
@ -1103,17 +1114,6 @@ namespace AgroBase.Forms
this.picEF.TabIndex = 90;
this.picEF.TabStop = false;
//
// lblTemperatura
//
this.lblTemperatura.AutoSize = true;
this.lblTemperatura.Font = new System.Drawing.Font("Microsoft Sans Serif", 6.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.lblTemperatura.Location = new System.Drawing.Point(639, 631);
this.lblTemperatura.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.lblTemperatura.Name = "lblTemperatura";
this.lblTemperatura.Size = new System.Drawing.Size(198, 12);
this.lblTemperatura.TabIndex = 173;
this.lblTemperatura.Text = "Temp atual: 0,00ºC - Mín: 0,00ºC - Máx: 0,00ºC";
//
// frmAcompanhamento
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
@ -1150,7 +1150,7 @@ namespace AgroBase.Forms
public System.Windows.Forms.DataVisualization.Charting.Chart chartDF;
public System.Windows.Forms.DataVisualization.Charting.Chart chartEF;
private System.Windows.Forms.PictureBox picRobo;
private System.Windows.Forms.Label lblDTM_Umidade;
private System.Windows.Forms.Label lblDTM_Corrente;
private System.Windows.Forms.Label lblDTM_Temperatura;
private System.Windows.Forms.Label lblDTM_Sentido;
private System.Windows.Forms.Label lblDTM_SentidoSP;
@ -1158,7 +1158,7 @@ namespace AgroBase.Forms
private System.Windows.Forms.Label lblDTM_Potencia;
private System.Windows.Forms.Label lblDTM_Velocidade;
private System.Windows.Forms.Label lblDTM_RPM;
private System.Windows.Forms.Label lblDFM_Umidade;
private System.Windows.Forms.Label lblDFM_Corrente;
private System.Windows.Forms.Label lblDFM_Temperatura;
private System.Windows.Forms.Label lblDFM_Sentido;
private System.Windows.Forms.Label lblDFM_SentidoSP;
@ -1166,7 +1166,7 @@ namespace AgroBase.Forms
private System.Windows.Forms.Label lblDFM_Potencia;
private System.Windows.Forms.Label lblDFM_Velocidade;
private System.Windows.Forms.Label lblDFM_RPM;
private System.Windows.Forms.Label lblETM_Umidade;
private System.Windows.Forms.Label lblETM_Corrente;
private System.Windows.Forms.Label lblETM_Temperatura;
private System.Windows.Forms.Label lblETM_Sentido;
private System.Windows.Forms.Label lblETM_SentidoSP;
@ -1174,7 +1174,7 @@ namespace AgroBase.Forms
private System.Windows.Forms.Label lblETM_Potencia;
private System.Windows.Forms.Label lblETM_Velocidade;
private System.Windows.Forms.Label lblETM_RPM;
private System.Windows.Forms.Label lblEFM_Umidade;
private System.Windows.Forms.Label lblEFM_Corrente;
private System.Windows.Forms.Label lblEFM_Temperatura;
private System.Windows.Forms.Label lblEFM_Sentido;
private System.Windows.Forms.Label lblEFM_SentidoSP;

View File

@ -128,8 +128,8 @@ namespace AgroBase.Forms
Label lblM_Temperatura = pnlFundo.Controls.OfType<Label>().FirstOrDefault(ctrl => ctrl.Name == "lbl" + Motor.ID + "M_Temperatura");
lblM_Temperatura.Text = "Temperatura: " + Motor.Temperatura.ToString("0.00") + "ºC";
lblM_Temperatura.ForeColor = Motor.Alarmes.Any(x => x.Tipo == S_Code.sTMP && (x.Maximo || x.Minimo)) ? Color.Red : Color.Black;
Label lblM_Umidade = pnlFundo.Controls.OfType<Label>().FirstOrDefault(ctrl => ctrl.Name == "lbl" + Motor.ID + "M_Umidade");
lblM_Umidade.Text = "Umidade: " + Motor.Umidade.ToString("0.00") + "%";
Label lblM_Corrente = pnlFundo.Controls.OfType<Label>().FirstOrDefault(ctrl => ctrl.Name == "lbl" + Motor.ID + "M_Corrente");
lblM_Corrente.Text = "Corrente: " + Motor.Corrente.ToString("0.00") + "A";
MovSensorimanetoGrafico Log = null;
if (Motor.LogGrafico.Count > 0)

View File

@ -1,17 +1,7 @@
using AgroBase.Services;
using CefSharp;
using CefSharp.DevTools.IO;
using CefSharp.WinForms;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace AgroBase.Forms
@ -75,8 +65,8 @@ namespace AgroBase.Forms
}
else if (!picLoading.Visible && GPSService.UltimaLeitura != null)
{
mapaService.AtualizarPosicaoMapaGPS(GPSService.UltimaLeitura.Latitude, GPSService.UltimaLeitura.Longitude);
chromiumWebBrowser.Reload();
//mapaService.AtualizarPosicaoMapaGPS(GPSService.UltimaLeitura.Latitude, GPSService.UltimaLeitura.Longitude);
//chromiumWebBrowser.Reload();
lblDatahora.Text = "Ultima Leitura: " + GPSService.UltimaLeitura.DataHora.ToString("dd/MM/yyyy HH:mm:ss");
lblLatitude.Text = "Latitude: " + GPSService.UltimaLeitura.Latitude;

View File

@ -122,11 +122,17 @@ namespace AgroBase.Forms
Funcoes = AtuadorModel.Funcoes.ToList();
Pinout = AtuadorModel.Pinout.ToList();
Dispositivos = Disp.Dados.BicosPulverizadores.Select(x => new DispositivoDataModel()
Dispositivos = new List<DispositivoDataModel>();
Dispositivos.AddRange(Disp.Dados.BicosPulverizadores.Select(x => new DispositivoDataModel()
{
ID = x.ID,
Funcoes = x.Funcoes
}).ToList();
}).ToList());
Dispositivos.AddRange(Disp.Dados.Sensores.Select(x => new DispositivoDataModel()
{
ID = x.ID,
Funcoes = x.Funcoes
}).ToList());
break;
}
}

View File

@ -265,7 +265,7 @@ namespace AgroBase
{
if (MovConectado || DirConectado || AtuConectado)
{
Variaveis.OperacaoEmAndamento.IniciarOperacao();
Variaveis.OperacaoEmAndamento.IniciarOperacao(null, false);
cmbModoOperacao.Enabled = false;
}

View File

@ -0,0 +1,114 @@
using AgroBase.Services;
using CefSharp.WinForms;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace AgroBase.Models
{
public class CameraCaminhoModel
{
public string Nome { get; set; }
public int Posicao { get; set; }
public CameraService<CameraDeepLabV3PlusModel> camera { get; set; }
public ChromiumWebBrowser browser { get; set; }
public Panel panel { get; set; }
public ComboBox combo { get; set; }
public string ArquivoLeitura { get; set; }
public int MaxLeituras { get; set; }
public string VideoPorta { get; set; }
public string VideoUrl { get; set; }
public string SocketPorta { get; set; }
public string CameraSelecionada { get; set; }
public Dictionary<string, Color> ClassMap = new Dictionary<string, Color>()
{
{ "background", Color.Black },
{ "rua", Color.DarkRed },
{ "cana", Color.DarkGreen },
{ "ceu", Color.Gold },
};
public List<CameraDeepLabV3PlusModel> Leituras { get; set; } = new List<CameraDeepLabV3PlusModel>();
public List<Point> PontosExtremos { get; set; } = new List<Point>();
public double Angulo { get; set; }
public double AnguloEsquerdo { get; set; }
public double AnguloDireito { get; set; }
public static List<Point> DefinirPontosExtremos(List<Point> PontosCamera)
{
if (!PontosCamera.Any())
{
return new List<Point>();
}
List<Point> Pontos = new List<Point>()
{
new Point(9999, -1), // Ponto 0 - Mais a esquerda e abaixo
new Point(9999, -1), // Ponto 1 - Mais a esquerda e abaixo, e esquerda > Ponto0.X
new Point(9999, 9999), // Ponto 2 - Mais a esquerda e acima
new Point(-1, 9999), // Ponto 3 - Mais a direita e acima
new Point(-1, -1), // Ponto 4 - Mais a direita e abaixo, e direita < Ponto5.X
new Point(-1, -1), // Ponto 5 - Mais a direita e abaixo
};
foreach (var Ponto in PontosCamera)
{
// Ponto 0 - Mais a esquerda e abaixo
if (Ponto.X < Pontos[0].X)
{
Pontos[0] = new Point() { X = Ponto.X, Y = Ponto.Y };
}
// Ponto 5 - Mais a direita e abaixo
if (Ponto.X > Pontos[5].X)
{
Pontos[5] = new Point() { X = Ponto.X, Y = Ponto.Y };
}
}
var Ponto0 = PontosCamera.Where(Ponto => Ponto.X == Pontos[0].X).OrderByDescending(Ponto => Ponto.Y).First();
Pontos[0] = Ponto0;
var Ponto5 = PontosCamera.Where(Ponto => Ponto.X == Pontos[5].X).OrderByDescending(Ponto => Ponto.Y).First();
Pontos[5] = Ponto5;
foreach (var Ponto in PontosCamera)
{
// Ponto 1 - Mais a esquerda e abaixo, e esquerda > Ponto0.X
if (Ponto.X < Pontos[1].X && Ponto.X > Ponto0.X)
{
Pontos[1] = new Point() { X = Ponto.X, Y = Ponto.Y };
}
// Ponto 4 Mais a direita e abaixo, e direita < Ponto5.X
if (Ponto.X > Pontos[4].X && Ponto.X < Ponto5.X)
{
Pontos[4] = new Point() { X = Ponto.X, Y = Ponto.Y };
}
}
var Ponto1 = PontosCamera.Where(Ponto => Ponto.X == Pontos[1].X).OrderByDescending(Ponto => Ponto.Y).First();
Pontos[1] = Ponto1;
var Ponto4 = PontosCamera.Where(Ponto => Ponto.X == Pontos[4].X).OrderByDescending(Ponto => Ponto.Y).First();
Pontos[4] = Ponto4;
int Y_min = PontosCamera.OrderBy(Ponto => Ponto.Y).First().Y;
foreach (var Ponto in PontosCamera.Where(x => x.Y == Y_min))
{
// Ponto 2 - Mais a esquerda e acima
if (Ponto.X < Pontos[2].X)
{
Pontos[2] = new Point() { X = Ponto.X, Y = Ponto.Y };
}
// Ponto 3 - Mais a direita e acima
if (Ponto.X > Pontos[3].X)
{
Pontos[3] = new Point() { X = Ponto.X, Y = Ponto.Y };
}
}
return Pontos;
}
}
}

View File

@ -23,5 +23,7 @@ namespace AgroBase.Models
public string VideoUrl { get; set; }
public string SocketPorta { get; set; }
public string CameraSelecionada { get; set; }
public int ErvasNoRadar { get; set; }
}
}

View File

@ -73,6 +73,10 @@ namespace AgroBase.Models
sCOR = 322,
sTEN = 112,
sFLX = 198,
sULT = 531,
sMAS = 532,
sBIC = 422,
sPRS = 333,
}
public enum BotoesJoystick

View File

@ -17,11 +17,18 @@ namespace AgroBase.Models.Modules
public static List<PinoutModel> Pinout { get; set; }
public static List<FuncoesPinout> Funcoes { get; set; } = new List<FuncoesPinout>() { FuncoesPinout.Geral };
public int QuantidadeBicos { get; set; } = 10;
public double DensidadeHerbicida { get; set; }
public double CapacidadeReservatorio { get; set; } = 30;
public bool AtuacaoNivelAlto { get; set; } = true;
public List<AtuadorBicoModel> BicosPulverizadores { get; set; } = new List<AtuadorBicoModel>();
public List<SensorModel> Sensores { get; set; } = new List<SensorModel>();
public double PercentualInicioPulverizacao { get; set; } = 0.3;
public double MassaReservatorio { get; set; } = 0;
public double VolumeReservatorio { get; set; } = 0;
public double PercentualReservatorio { get; set; } = 0;
public double MediaNivelFluxo { get; set; } = 0;
public double PressaoLinha { get; set; } = 0;
public static AtuadorModel CarregarParametrosIniciais()
@ -30,23 +37,80 @@ namespace AgroBase.Models.Modules
{
QuantidadeBicos = 10,
Conectado = false,
BicosPulverizadores = new List<AtuadorBicoModel>()
BicosPulverizadores = new List<AtuadorBicoModel>(),
Sensores = new List<SensorModel>()
{
new SensorModel()
{
ID = "FLXLN",
Descricao = "Fluxo na linha principal",
Prioridade = 10,
Componente = S_Code.sFLX,
Aferir = false,
Inicializado = false,
Testando = false,
Funcoes = new List<FuncoesPinout>()
{
FuncoesPinout.Fluxo,
},
DelayAmostragem = 200,
UnidadeMedida = "L/m",
Parametros = new List<string[]>()
{
new string[] { "Calibragem", "00450" }
},
},
new SensorModel()
{
ID = "MASRS",
Descricao = "Massa do reservatório de herbicida",
Prioridade = 3,
Componente = S_Code.sMAS,
Aferir = false,
Inicializado = false,
Testando = false,
Funcoes = new List<FuncoesPinout>()
{
FuncoesPinout.DT,
FuncoesPinout.SCK,
},
DelayAmostragem = 1000,
UnidadeMedida = "Kg",
Parametros = new List<string[]>(),
},
new SensorModel()
{
ID = "PRSLN",
Descricao = "Pressão na linha principal",
Prioridade = 3,
Componente = S_Code.sPRS,
Aferir = false,
Inicializado = false,
Testando = false,
Funcoes = new List<FuncoesPinout>()
{
FuncoesPinout.Pressao,
},
DelayAmostragem = 1000,
UnidadeMedida = "psi",
Parametros = new List<string[]>(),
},
},
};
for (int i = 0; i < Atuador.QuantidadeBicos; i++)
{
Atuador.BicosPulverizadores.Add(new AtuadorBicoModel()
{
ID = "B" + (i + 1).ToString("00"),
Posicao = i + 1,
Comandar = false,
Posicao = i + 1,
Comandar = false,
Atuado = false,
Funcoes = new List<FuncoesPinout>()
{
FuncoesPinout.Solenoide,
FuncoesPinout.Fluxo
},
StatusBico = false,
NivelFluxo = 0
MediaNivelFluxo = 0
});
}
return Atuador;
@ -55,8 +119,9 @@ namespace AgroBase.Models.Modules
public List<string> ProtocoloConfiguracao(bool Conectar)
{
List<string> Config = BicosPulverizadores.Select(x => x.ProtocoloConfiguracaoBico(Conectar)).ToList();
Config.AddRange(Sensores.Select(x => x.ProtocoloConfiguracaoSensor(Pinout, Conectar)).ToList());
string ProtocoloMOD = ((int)F_Code.Cfg).ToString() +
"MD " + ";" + // 0 ~ 2
"MD".PadRight(5, ' ') + ";" + // 0 ~ 2
(Conectar ? "1" : "0") + ";" + // 4
_TaxaAmostragem.ToString("00000") + ";" + // 6 ~ 10
(Pinout.Any(x => x.Funcao == FuncoesPinout.Geral) ? Pinout.FirstOrDefault(x => x.Funcao == FuncoesPinout.Geral).Pino.ToString("00") : "-1") + ";" + // 12 ~ 13
@ -73,7 +138,8 @@ namespace AgroBase.Models.Modules
string[] Dados = Protocolo.Replace(SerialService.BeginSensor, "").Split(SerialService.EndLine[0])[0].Split(';');
S_Code TipoSensor = (S_Code)(int.Parse(Dados[0]));
AtuadorBicoModel Bico = BicosPulverizadores.FirstOrDefault(x => x.ID == Dados[1]);
if (Bico == null)
SensorModel Sensor = Sensores.FirstOrDefault(x => x.ID == Dados[1]);
if (Bico == null && Sensor == null)
{
if (Dados[1] == "MD ")
{
@ -85,26 +151,105 @@ namespace AgroBase.Models.Modules
{
switch (TipoSensor)
{
case S_Code.sFLX:
case S_Code.sCFG:
{
Bico.StatusBico = Dados[2] == "1";
double nivelFluxo = 0;
double.TryParse(Dados[3].Replace(".", ","), out nivelFluxo);
Bico.NivelFluxo = nivelFluxo;
bool Inicializado = Dados[2] == "1";
if (Bico != null)
{
Bico.Inicializado = Inicializado;
}
if (Sensor != null)
{
Sensor.Inicializado = Inicializado;
}
break;
}
case S_Code.sTST:
{
bool testando = Dados[1] == "1";
Bico.Testando = testando;
bool Testando = Dados[1] == "1";
if (Bico != null)
{
Bico.Testando = Testando;
}
if (Sensor != null)
{
Sensor.Testando = Testando;
}
break;
}
case S_Code.sCFG:
case S_Code.sBIC:
{
Bico.Inicializado = Dados[2] == "1";
bool StatusBico = Dados[2] == "1";
Bico.StatusBico = StatusBico;
break;
}
case S_Code.sFLX:
{
double nivelFluxo = 0;
double.TryParse(Dados[2].Replace(".", ","), out nivelFluxo);
int tempo = 0;
int.TryParse(Dados[3].Replace(".", ","), out tempo);
if (nivelFluxo > 0)
{
MediaNivelFluxo = nivelFluxo;
foreach (var bico in BicosPulverizadores.Where(x => x.Atuado))
{
bico.MediaNivelFluxo = nivelFluxo / BicosPulverizadores.Count(y => y.Atuado);
};
Variaveis.OperacaoEmAndamento.Sensoriamento.HerbicidaConsumido += nivelFluxo;
}
Sensor.Leituras = new List<double>()
{
nivelFluxo,
tempo
};
break;
}
case S_Code.sMAS:
{
double massa = 0;
double.TryParse(Dados[2].Replace(".", ","), out massa);
MassaReservatorio = massa;
VolumeReservatorio = massa / DensidadeHerbicida;
PercentualReservatorio = VolumeReservatorio / CapacidadeReservatorio * 100;
Sensor.Leituras = new List<double>()
{
massa
};
break;
}
case S_Code.sPRS:
{
double pressao = 0;
double.TryParse(Dados[2].Replace(".", ","), out pressao);
int leitura = 0;
int.TryParse(Dados[3].Replace(".", ","), out leitura);
PressaoLinha = pressao;
Sensor.Leituras = new List<double>()
{
pressao,
leitura
};
break;
}
}
if (Sensor != null)
{
if (Sensor.Leituras[0] > Sensor.ValorMaximo)
{
Sensor.ValorMaximo = Sensor.Leituras[0];
}
else if (Sensor.Leituras[0] < Sensor.ValorMinimo)
{
Sensor.ValorMinimo = Sensor.Leituras[0];
}
}
}
catch (Exception ex)
@ -172,19 +317,18 @@ namespace AgroBase.Models.Modules
public bool Testando { get; set; }
public List<FuncoesPinout> Funcoes { get; set; }
public bool StatusBico { get; set; }
public double NivelFluxo { get; set; }
public double MediaNivelFluxo { get; set; }
public string ProtocoloConfiguracaoBico(bool Conectar)
{
var _pinout = AtuadorModel.Pinout.Where(x => x.ComponenteID == ID).ToList();
return ((int)F_Code.Cfg).ToString() +
ID + ";" + // 0 ~ 2
ID.PadRight(5, ' ') + ";" + // 0 ~ 2
(Conectar ? "1" : "0") + ";" + // 4
(Comandar ? "1" : "0") + ";" + // 6
Posicao.ToString("00") + ";" + // 8 ~ 9
(_pinout.Any(x => x.Funcao == FuncoesPinout.Solenoide) ? _pinout.FirstOrDefault(x => x.Funcao == FuncoesPinout.Solenoide).Pino.ToString("00") : "-1") + "," + // 11 ~ 12
(_pinout.Any(x => x.Funcao == FuncoesPinout.Fluxo) ? _pinout.FirstOrDefault(x => x.Funcao == FuncoesPinout.Fluxo).Pino.ToString("00") : "-1"); // 14 ~ 15
(_pinout.Any(x => x.Funcao == FuncoesPinout.Solenoide) ? _pinout.FirstOrDefault(x => x.Funcao == FuncoesPinout.Solenoide).Pino.ToString("00") : "-1"); // 11 ~ 12
}
public string ProtocoloComando()

View File

@ -36,6 +36,7 @@ namespace AgroBase.Models
public int TempoEmAtividade { get; set; } = 0;
public double DistanciaPercorridaTotal { get; set; } = 0;
public double DistanciaPercorridaParcial { get; set; } = 0;
public double DistanciaPercorridaOperacao { get; set; } = 0;
public Timer tmrRegistrador { get; set; }
@ -394,6 +395,7 @@ namespace AgroBase.Models
double VelocidadeMedia = Motores.Average(x => x.VelocidadeInstantanea * 1000 / 3600);
DistanciaPercorridaTotal += 1 * VelocidadeMedia;
DistanciaPercorridaParcial += (UltimaDirecao == Direcao.Frente ? 1 : UltimaDirecao == Direcao.Tras ? -1 : 0) * VelocidadeMedia;
DistanciaPercorridaOperacao += 1 * VelocidadeMedia;
}
}
@ -436,6 +438,8 @@ namespace AgroBase.Models
public double Temperatura { get; set; } = 0;
public double Umidade { get; set; } = 0;
public double IndiceCalor { get; set; } = 0;
public double Corrente { get; set; } = 0;
public double Tensao { get; set; } = 0;
public ConfiguracaoSentidoMotor ConfigSentidos { get; set; }
public bool Testando { get; set; } = false;
public List<AlarmeModel> Alarmes { get; set; } = new List<AlarmeModel>();
@ -536,15 +540,35 @@ namespace AgroBase.Models
return "";
}
public void AtualizarTemperaturaMotor(SensorModel Sensor)
public void AtualizarSensoresMotor(SensorModel Sensor)
{
Temperatura = Sensor.Leituras[0];
bool Computar = true;
switch (Sensor.Componente)
{
case S_Code.sTMP:
Temperatura = Sensor.Leituras[0];
break;
case S_Code.sCOR:
Corrente = Sensor.Leituras[0];
Tensao = Sensor.Leituras[1];
break;
default:
Computar = false;
break;
}
if (!Computar)
{
return;
}
AlarmeModel _Alarme = new AlarmeModel()
{
Tipo = S_Code.sTMP,
Tipo = Sensor.Componente,
Valor = Sensor.Leituras[0],
Maximo = Temperatura > Sensor.LimiteMaximo,
Minimo = Temperatura < Sensor.LimiteMinimo,
Maximo = Sensor.Leituras[0] > Sensor.LimiteMaximo,
Minimo = Sensor.Leituras[0] < Sensor.LimiteMinimo,
ParaMaximo = true,
ParaMinimo = true
};
@ -573,6 +597,8 @@ namespace AgroBase.Models
Alarme = Alarmes.Any(x => (x.Maximo && x.ParaMaximo) || (x.Minimo && x.ParaMinimo));
}
}
public class SensoriamentoMotorTestes

View File

@ -267,13 +267,26 @@ namespace AgroBase.Models.Modules
REF180,
REF270,
Solenoide,
DT,
SCK,
Pressao,
Fluxo,
Leitura1,
Leitura2,
Leitura3,
Leitura4,
I2C,
Tensao,
Corrente,
Echo,
Trigger,
Massa,
}
public static class PinoutUtils
{
public static List<FuncoesPinout> PinosSecundarios = new List<FuncoesPinout>()
{
FuncoesPinout.SCK,
FuncoesPinout.Trigger,
};
}
}

View File

@ -131,23 +131,142 @@ namespace AgroBase.Models.Modules
},
new SensorModel()
{
ID = "ABAT",
ID = "AMVET",
Prioridade = 10,
Descricao = "Corrente da bateria",
Descricao = "Corrente do Motor BLDC ET",
Componente = S_Code.sCOR,
Aferir = true,
Inicializado = false,
Testando = false,
Funcoes = new List<FuncoesPinout>()
{
FuncoesPinout.Corrente,
FuncoesPinout.I2C,
},
DelayAmostragem = 500,
UnidadeMedida = "A",
Parametros = new List<string[]>()
{
new string[] { "V offset", "00.413" },
new string[] { "Sensibilidade", "000.35" },
new string[] { "Endereço I2C", "0x40" },
},
},
new SensorModel()
{
ID = "AMVEF",
Prioridade = 10,
Descricao = "Corrente do Motor BLDC EF",
Componente = S_Code.sCOR,
Aferir = true,
Inicializado = false,
Testando = false,
Funcoes = new List<FuncoesPinout>()
{
FuncoesPinout.I2C,
},
DelayAmostragem = 500,
UnidadeMedida = "A",
Parametros = new List<string[]>()
{
new string[] { "Endereço I2C", "0x41" },
},
},
new SensorModel()
{
ID = "AMVDT",
Prioridade = 10,
Descricao = "Corrente do Motor BLDC DT",
Componente = S_Code.sCOR,
Aferir = true,
Inicializado = false,
Testando = false,
Funcoes = new List<FuncoesPinout>()
{
FuncoesPinout.I2C,
},
DelayAmostragem = 500,
UnidadeMedida = "A",
Parametros = new List<string[]>()
{
new string[] { "Endereço I2C", "0x42" },
},
},
new SensorModel()
{
ID = "AMVDF",
Prioridade = 10,
Descricao = "Corrente do Motor BLDC DF",
Componente = S_Code.sCOR,
Aferir = true,
Inicializado = false,
Testando = false,
Funcoes = new List<FuncoesPinout>()
{
FuncoesPinout.I2C,
},
DelayAmostragem = 500,
UnidadeMedida = "A",
Parametros = new List<string[]>()
{
new string[] { "Endereço I2C", "0x43" },
},
},
new SensorModel()
{
ID = "AMP",
Prioridade = 10,
Descricao = "Corrente dos Motores de Passo",
Componente = S_Code.sCOR,
Aferir = true,
Inicializado = false,
Testando = false,
Funcoes = new List<FuncoesPinout>()
{
FuncoesPinout.I2C,
},
DelayAmostragem = 500,
UnidadeMedida = "A",
Parametros = new List<string[]>()
{
new string[] { "Endereço I2C", "0x44" },
},
},
new SensorModel()
{
ID = "AAT",
Prioridade = 10,
Descricao = "Corrente do Módulo Atuador",
Componente = S_Code.sCOR,
Aferir = true,
Inicializado = false,
Testando = false,
Funcoes = new List<FuncoesPinout>()
{
FuncoesPinout.I2C,
},
DelayAmostragem = 500,
UnidadeMedida = "A",
Parametros = new List<string[]>()
{
new string[] { "Endereço I2C", "0x45" },
},
},
new SensorModel()
{
ID = "APC",
Prioridade = 10,
Descricao = "Corrente do Computador",
Componente = S_Code.sCOR,
Aferir = true,
Inicializado = false,
Testando = false,
Funcoes = new List<FuncoesPinout>()
{
FuncoesPinout.I2C,
},
DelayAmostragem = 500,
UnidadeMedida = "A",
Parametros = new List<string[]>()
{
new string[] { "Endereço I2C", "0x46" },
},
},
new SensorModel()
@ -170,15 +289,51 @@ namespace AgroBase.Models.Modules
new string[] { "V offset", "0.0000" },
},
},
new SensorModel()
{
ID = "SUESQ",
Descricao = "Sensor Ultrassom Esquerdo",
Prioridade = 2,
Componente = S_Code.sULT,
Aferir = true,
Inicializado = false,
Testando = false,
Funcoes = new List<FuncoesPinout>()
{
FuncoesPinout.Echo,
FuncoesPinout.Trigger,
},
DelayAmostragem = 1000,
UnidadeMedida = "cm",
Parametros = new List<string[]>(),
},
new SensorModel()
{
ID = "SUDIR",
Descricao = "Sensor Ultrassom Direito",
Prioridade = 2,
Componente = S_Code.sULT,
Aferir = true,
Inicializado = false,
Testando = false,
Funcoes = new List<FuncoesPinout>()
{
FuncoesPinout.Echo,
FuncoesPinout.Trigger,
},
DelayAmostragem = 1000,
UnidadeMedida = "cm",
Parametros = new List<string[]>(),
},
}
};
}
public List<string> ProtocoloConfiguracao(bool Conectar)
{
List<string> Config = Sensores.Select(x => x.ProtocoloConfiguracaoSensor(Conectar)).ToList();
List<string> Config = Sensores.Select(x => x.ProtocoloConfiguracaoSensor(Pinout, Conectar)).ToList();
string ProtocoloMOD = ((int)F_Code.Cfg).ToString() +
"MD " + ";" + // 0 ~ 4
"MD".PadRight(5, ' ') + ";" + // 0 ~ 4
(Conectar ? "1" : "0") + ";" + // 6
_TaxaAmostragem.ToString("00000"); // 8 ~ 12
Config.Add(ProtocoloMOD);
@ -214,32 +369,32 @@ namespace AgroBase.Models.Modules
switch (TipoSensor)
{
case S_Code.sCFG:
Sensor.Inicializado = Dados[2] == "1";
break;
case S_Code.sCOR:
double leitura = -1;
double.TryParse(Dados[2].Replace(".", ","), out leitura);
double vPin = -1;
double.TryParse(Dados[3].Replace(".", ","), out vPin);
double vBarramento = -1;
double.TryParse(Dados[2].Replace(".", ","), out vBarramento);
double vShunt = -1;
double.TryParse(Dados[3].Replace(".", ","), out vShunt);
double corrente = -1;
double.TryParse(Dados[4].Replace(".", ","), out corrente);
double potencia = -1;
double.TryParse(Dados[5].Replace(".", ","), out potencia);
Sensor.Leituras = new List<double>()
{
corrente,
leitura,
vPin,
vBarramento,
potencia,
vShunt,
};
if (corrente > Sensor.ValorMaximo)
if (Sensor.Descricao.Contains("Bateria"))
{
Sensor.ValorMaximo = corrente;
frmInstancial.frmAcompanhamento.AtualizarSensores("Corrente atual: " + corrente.ToString("0.00") + "A - Mín: " + Sensor.ValorMinimo.ToString("0.00") + "A - Máx: " + Sensor.ValorMaximo.ToString("0.00") + "A");
}
else if (corrente < Sensor.ValorMinimo)
{
Sensor.ValorMinimo = corrente;
}
frmInstancial.frmAcompanhamento.AtualizarSensores("Corrente atual: " + corrente.ToString("0.00") + "A - Mín: " + Sensor.ValorMinimo.ToString("0.00") + "A - Máx: " + Sensor.ValorMaximo.ToString("0.00") + "A");
AtualizaGrafico = true;
break;
case S_Code.sTEN:
@ -256,57 +411,69 @@ namespace AgroBase.Models.Modules
leituraV,
vPinV,
};
if (tensao > Sensor.ValorMaximo)
{
Sensor.ValorMaximo = tensao;
}
else if (tensao < Sensor.ValorMinimo)
{
Sensor.ValorMinimo = tensao;
}
frmInstancial.frmAcompanhamento.AtualizarSensores("Tensão atual: " + tensao.ToString("0.00") + "V - Mín: " + Sensor.ValorMinimo.ToString("0.00") + "V - Máx: " + Sensor.ValorMaximo.ToString("0.00") + "V");
if (Sensor.Descricao.Contains("Bateria"))
{
frmInstancial.frmAcompanhamento.AtualizarSensores("Tensão atual: " + tensao.ToString("0.00") + "V - Mín: " + Sensor.ValorMinimo.ToString("0.00") + "V - Máx: " + Sensor.ValorMaximo.ToString("0.00") + "V");
}
AtualizaGrafico = true;
break;
case S_Code.sCFG:
{
Sensor.Inicializado = Dados[2] == "1";
break;
}
case S_Code.sTMP: {
case S_Code.sTMP:
double temp = -1;
double.TryParse(Dados[2].Replace(".", ","), out temp);
Sensor.Leituras = new List<double>() { temp };
if (temp > Sensor.ValorMaximo)
{
Sensor.ValorMaximo = temp;
}
else if (temp < Sensor.ValorMinimo)
{
Sensor.ValorMinimo = temp;
}
MovSensoriamentoMotor Motor =
Variaveis.DispositivosConectados.Any(x => x.Dispositivo == T_Code.Mov) ?
((MovimentacaoModel)(Variaveis.DispositivosConectados.FirstOrDefault(x => x.Dispositivo == T_Code.Mov).Dados)).Motores.FirstOrDefault(x => Sensor.ID.Contains(x.ID)) :
null;
if (Motor != null)
{
Motor.AtualizarTemperaturaMotor(Sensor);
}
if (Sensor.ID == "TBAT")
if (Sensor.Descricao.Contains("Bateria"))
{
frmInstancial.frmAcompanhamento.AtualizarSensores("Temp atual: " + temp.ToString("0.00") + "ºC - Mín: " + Sensor.ValorMinimo.ToString("0.00") + "ºC - Máx: " + Sensor.ValorMaximo.ToString("0.00") + "ºC");
}
AtualizaGrafico = true;
break;
}
case S_Code.sULT:
double distancia = -1;
double.TryParse(Dados[2].Replace(".", ","), out distancia);
int duracao = -1;
int.TryParse(Dados[3], out duracao);
Sensor.Leituras = new List<double>()
{
distancia,
duracao,
};
if (Sensor.ID == "SUESQ")
{
Variaveis.OperacaoEmAndamento.Sensoriamento.DistanciaEsquerda = distancia;
}
else if (Sensor.ID == "SUDIR")
{
Variaveis.OperacaoEmAndamento.Sensoriamento.DistanciaDireita = distancia;
}
AtualizaGrafico = true;
break;
}
if (Sensor.Leituras[0] > Sensor.ValorMaximo)
{
Sensor.ValorMaximo = Sensor.Leituras[0];
}
else if (Sensor.Leituras[0] < Sensor.ValorMinimo)
{
Sensor.ValorMinimo = Sensor.Leituras[0];
}
MovSensoriamentoMotor Motor =
Variaveis.DispositivosConectados.Any(x => x.Dispositivo == T_Code.Mov) ?
((MovimentacaoModel)(Variaveis.DispositivosConectados.FirstOrDefault(x => x.Dispositivo == T_Code.Mov).Dados)).Motores.FirstOrDefault(x => Sensor.ID.Contains(x.ID)) :
null;
if (Motor != null)
{
Motor.AtualizarSensoresMotor(Sensor);
}
if (AtualizaGrafico)
@ -436,9 +603,9 @@ namespace AgroBase.Models.Modules
public List<SenSensorimanetoGrafico> LogGrafico = new List<SenSensorimanetoGrafico>();
public string ProtocoloConfiguracaoSensor(bool Conectar)
public string ProtocoloConfiguracaoSensor(List<PinoutModel> Pinout, bool Conectar)
{
var _pinout = SensoriamentoModel.Pinout.Where(x => x.ComponenteID == ID).ToList();
var _pinout = Pinout.Where(x => x.ComponenteID == ID).ToList();
string Protocolo = ((int)F_Code.Cfg).ToString() +
ID.PadRight(5, ' ') + ";" + // 0 ~ 4
(Conectar ? "1" : "0") + ";" + // 6
@ -446,7 +613,8 @@ namespace AgroBase.Models.Modules
(Aferir ? "1" : "0") + ";" + // 12
DelayAmostragem.ToString("00000") + ";" + // 14 ~ 18
Prioridade.ToString("00") + ";" + // 20 ~ 21
(_pinout.Any(x => x.Funcao != FuncoesPinout.NaoConectado) ? _pinout.FirstOrDefault(x => x.Funcao != FuncoesPinout.NaoConectado).Pino.ToString("00") : "-1"); // 23 ~ 24
(_pinout.Any(x => x.Funcao != FuncoesPinout.NaoConectado) ? _pinout.FirstOrDefault(x => x.Funcao != FuncoesPinout.NaoConectado).Pino.ToString("00") : "-1") + ";" + // 23 ~ 24
(_pinout.Any(x => PinoutUtils.PinosSecundarios.Any(y => y == x.Funcao)) ? _pinout.FirstOrDefault(x => PinoutUtils.PinosSecundarios.Any(y => y == x.Funcao)).Pino.ToString("00") : "-1"); // 26 ~ 27
foreach (var Parametro in Parametros)
{
Protocolo += ";" + Parametro[1];

View File

@ -52,12 +52,12 @@ namespace AgroBase.Models
this.DispDir = Dir;
this.DispAtu = Atu;
AtuacoesPorBico = new List<int>();
this.Sensoriamento.AtuacoesPorBico = new List<int>();
if (DispAtu != null)
{
for (int i = 0; i < DispAtu.Dados.QuantidadeBicos; i++)
{
AtuacoesPorBico.Add(0);
this.Sensoriamento.AtuacoesPorBico.Add(0);
}
}
}
@ -74,17 +74,9 @@ namespace AgroBase.Models
public OperacaoControleModel Controle { get; set; }
public OperacaoControleModel ControleAnterior { get; set; }
public List<OperacaoModulosMandatoriosModel> ModulosMandatorios { get; set; }
public int ErvasNoRadar { get; set; } = 0;
public double VelocidadeMedia { get; set; } = 0;
public double HerbicidaConsumido { get; set; } = 0;
public double HerbicidaPorErva { get; set; } = 0;
public double BateriaConsumida { get; set; } = 0;
public int ErvasIdentificadas { get; set; } = 0;
public List<int> AtuacoesPorBico { get; set; } = new List<int>();
public double DistanciaPercorrida { get; set; } = 0;
public double ProgressoPercurso { get; set; } = 0;
public OperacaoSensoriamentoModel Sensoriamento { get; set; } = new OperacaoSensoriamentoModel();
public int TempoIniciarOperacao { get; set; } = 10;
public static OperacaoModel CarregarParametrosOperacaoPadrao(ModoOperacao Modo)
{
@ -96,21 +88,26 @@ namespace AgroBase.Models
{
Controle = new OperacaoControleModel(),
ControleAnterior = new OperacaoControleModel(),
AtuacoesPorBico = new List<int>(),
BateriaConsumida = 0,
DistanciaPercorrida = 0,
ErvasIdentificadas = 0,
ErvasNoRadar = 0,
HerbicidaConsumido = 0,
HerbicidaPorErva = 0,
Iniciado = false,
ProgressoPercurso = 0,
TimestampInicio = 0,
TimestampFim = 0,
VelocidadeMedia = 0,
DispAtu = AtuConectado,
DispDir = DirConectado,
DispMov = MovConectado,
Sensoriamento = new OperacaoSensoriamentoModel()
{
AtuacoesPorBico = new List<int>(),
BateriaConsumida = 0,
DistanciaPercorrida = 0,
ErvasIdentificadas = 0,
ErvasNoRadar = 0,
HerbicidaConsumido = 0,
HerbicidaPorErva = 0,
ProgressoPercurso = 0,
VelocidadeMedia = 0,
DistanciaDireita = 0,
DistanciaEsquerda = 0,
}
};
switch (Modo)
@ -210,7 +207,7 @@ namespace AgroBase.Models
{
for (int i = 0; i < OperacaoCarregar.DispAtu.Dados.QuantidadeBicos; i++)
{
OperacaoCarregar.AtuacoesPorBico.Add(0);
OperacaoCarregar.Sensoriamento.AtuacoesPorBico.Add(0);
}
}
@ -252,16 +249,21 @@ namespace AgroBase.Models
}
public void IniciarOperacao(OperacaoControleModel controle = null)
public void IniciarOperacao(OperacaoControleModel controle = null, bool DaIHM = true)
{
Iniciado = true;
TimestampInicio = DateTime.Now.Ticks;
TimestampFim = 0;
DispMov.Dados.DistanciaPercorridaOperacao = 0;
if (controle != null)
{
Controle = controle;
}
frmOperacao.Show();
if (DaIHM)
{
frmOperacao.Show();
}
}
public void FinalizarOperacao()
@ -316,8 +318,8 @@ namespace AgroBase.Models
{
return;
}
VelocidadeMedia = DispMov.Dados.Motores.Average(x => x.VelocidadeInstantanea);
DistanciaPercorrida = DispMov.Dados.DistanciaPercorridaTotal;
Sensoriamento.VelocidadeMedia = DispMov.Dados.Motores.Average(x => x.VelocidadeInstantanea);
Sensoriamento.DistanciaPercorrida = DispMov.Dados.DistanciaPercorridaOperacao;
}
public List<string> EnviarProtocoloComando(IDispositivosService Dispositivo)
@ -331,14 +333,22 @@ namespace AgroBase.Models
if (Dispositivo.Dispositivo == T_Code.Mov)
{
GeneralJoystick.RPM = Controle.RPM;
if (Controle.RPM == 0)
{
DirecaoAtual = Direcao.Parado;
}
else
{
GeneralJoystick.RPM = Controle.RPM;
DirecaoAtual = Direcao.Frente;
if (Controle.RPM < 0)
{
GeneralJoystick.RPM *= -1;
DirecaoAtual = Direcao.Tras;
}
else
{
DirecaoAtual = Direcao.Frente;
}
}
}
else if (Dispositivo.Dispositivo == T_Code.Dir)
@ -409,4 +419,19 @@ namespace AgroBase.Models
public bool Conectado { get; set; }
}
public class OperacaoSensoriamentoModel
{
public int ErvasNoRadar { get; set; } = 0;
public double VelocidadeMedia { get; set; } = 0;
public double HerbicidaConsumido { get; set; } = 0;
public double HerbicidaPorErva { get; set; } = 0;
public double BateriaConsumida { get; set; } = 0;
public int ErvasIdentificadas { get; set; } = 0;
public List<int> AtuacoesPorBico { get; set; } = new List<int>();
public double DistanciaPercorrida { get; set; } = 0;
public double ProgressoPercurso { get; set; } = 0;
public double DistanciaEsquerda { get; set; } = 0;
public double DistanciaDireita { get; set; } = 0;
}
}

View File

@ -37,11 +37,11 @@ namespace AgroBase.Models
public static class VariaveisPortas
{
public static string GPS { get; } = "6512";
public static string CameraSolo { get; } = "6513";
public static string CameraCaminho { get; } = "6514";
public static string SocketSolo { get; } = "6360";
public static string SocketCaminho { get; } = "6365";
public static int GPS { get; } = 6512;
public static int CameraSolo { get; } = 6522;
public static int CameraCaminho { get; } = 6544;
public static int SocketSolo { get; } = 6568;
public static int SocketCaminho { get; } = 6588;
}
}

View File

@ -201,6 +201,7 @@ namespace AgroBase.Comum
case T_Code.Sen:
Dados = CarregarParametros(SensoriamentoModel.CarregarParametrosIniciais());
frmConfig = new frmSenConfig();
((frmSenConfig)frmConfig).Dispositivo = T_Code.Sen;
break;
case T_Code.Atu:
Dados = CarregarParametros(AtuadorModel.CarregarParametrosIniciais());
@ -356,12 +357,18 @@ namespace AgroBase.Comum
else if (Dados is AtuadorModel atuModel && Dispositivo == T_Code.Atu)
{
clbDispositivos.Items.Clear();
var Bicos = atuModel.BicosPulverizadores;
var Bicos = atuModel.BicosPulverizadores.ToList();
foreach (var Bico in Bicos)
{
clbDispositivos.Items.Add(Bico.ID.ToString());
clbDispositivos.SetItemChecked(clbDispositivos.Items.Count - 1, Bico.Comandar);
}
var Sensores = atuModel.Sensores.ToList();
foreach (var Sensor in Sensores)
{
clbDispositivos.Items.Add(Sensor.ID.ToString());
clbDispositivos.SetItemChecked(clbDispositivos.Items.Count - 1, Sensor.Aferir);
}
}
clbDispositivos.ItemCheck -= clbDispositivos_ItemCheck;
clbDispositivos.ItemCheck += clbDispositivos_ItemCheck;
@ -558,9 +565,17 @@ namespace AgroBase.Comum
if (Dados is AtuadorModel atuModel)
{
atuModel.BicosPulverizadores.ForEach(x => x.Comandar = false);
atuModel.Sensores.ForEach(x => x.Aferir = false);
foreach (var Item in ((CheckedListBox)sender).CheckedItems)
{
atuModel.BicosPulverizadores.First(x => x.ID == Item.ToString()).Comandar = true;
if (atuModel.BicosPulverizadores.Any(x => x.ID == Item.ToString()))
{
atuModel.BicosPulverizadores.FirstOrDefault(x => x.ID == Item.ToString()).Comandar = true;
}
else if (atuModel.Sensores.Any(x => x.ID == Item.ToString()))
{
atuModel.Sensores.FirstOrDefault(x => x.ID == Item.ToString()).Aferir = true;
}
}
}
break;

View File

@ -1,14 +1,10 @@
using AgroBase.Models;
using CefSharp.DevTools.IO;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace AgroBase.Services
@ -69,9 +65,11 @@ namespace AgroBase.Services
{
NomeArquivoMapa = nomeArquivoMapa;
pythonProcess = PythonService.RunScript(PythonService.ScriptMapGPS, new string[] { VariaveisPortas.GPS, PathUpdateMarker });
//pythonProcess = PythonService.RunScript(PythonService.ScriptMapGPS, new string[] { VariaveisPortas.GPS.ToString(), PathUpdateMarker });
MapaUrl = new Uri("http://localhost:" + VariaveisPortas.GPS + "/").AbsoluteUri;
//MapaUrl = new Uri("http://localhost:" + VariaveisPortas.GPS + "/").AbsoluteUri;
MapaUrl = new Uri(Variaveis.CaminhoSistema + "Utils\\offline_maps\\index.html").AbsoluteUri;
}
public async void AtualizarPosicaoMapaGPS(double lat, double lon)

View File

@ -0,0 +1,38 @@
CACHE MANIFEST
NETWORK:
*
CACHE:
index.html
style.css
script.js
gmapapi.js
gmapcache/main.js
gmapcache/components.js
gmapcache/empty.js
gmapcache/gstatic/arrow-down.png
gmapcache/gstatic/cb/mod_cb_scout/cb_scout_sprite_api_003.png
gmapcache/gstatic/cb/target_locking.gif
gmapcache/gstatic/google_white.png
gmapcache/gstatic/iw3.png
gmapcache/gstatic/iws3.png
gmapcache/gstatic/mapcontrols3d7.png
gmapcache/gstatic/markers2/marker_sprite.png
gmapcache/gstatic/mv/imgs8.png
gmapcache/gstatic/rotate2.png
gmapcache/gstatic/szc4.png
gmapcache/gstatic/transparent.png
gmapcache/gstatic/openhand_8_8.cur
gmapcache/gstatic/closedhand_8_8.cur
FALLBACK:
gmapcache/googleapis/maps/api/js/AuthenticationService.Authenticate gmapcache/empty.js
gmapcache/googleapis/maps/api/js/QuotaService.RecordEvent gmapcache/empty.js
gmapcache/googleapis/maps/api/js/StaticMapService.GetMapImage gmapcache/empty.js
gmapcache/googleapis/maps/api/js/ViewportInfoService.GetViewportInfo gmapcache/empty.js
gmapcache/googleapis/maps/gen_204 gmapcache/empty.js
gmapcache/googleapis/mapslt/ft gmapcache/empty.js

View File

@ -0,0 +1,224 @@
window.google = window.google || {};
google.maps = google.maps || {};
(function () {
function getScript(src) {
document.write('<' + 'script src="' + src + '"' + ' type="text/javascript"><' + '/script>');
}
var modules = google.maps.modules = {};
google.maps.__gjsload__ = function (name, text) {
modules[name] = text;
};
google.maps.Load = function (apiLoad) {
delete google.maps.Load;
apiLoad([null, [
[
["http://mt0.googleapis.com/vt?lyrs=m@174000000\u0026src=api\u0026hl=en-US\u0026"],
null,
null,
null,
null,
"m@174000000"
],
[
["http://khm0.googleapis.com/kh?v=107\u0026hl=en-US\u0026"],
null,
null,
null,
1,
"107"
],
[
["http://mt0.googleapis.com/vt?lyrs=h@174000000\u0026src=api\u0026hl=en-US\u0026"],
null,
null,
"imgtp=png32\u0026",
null,
"h@174000000"
],
[
["http://mt0.googleapis.com/vt?lyrs=t@128,r@174000000\u0026src=api\u0026hl=en-US\u0026"],
null,
null,
null,
null,
"t@128,r@174000000"
],
null,
[
[null, 0, 7, 7, [
[
[330000000, 1246050000],
[386200000, 1293600000]
],
[
[366500000, 1297000000],
[386200000, 1320034790]
]
], ["http://mt0.gmaptiles.co.kr/mt?v=kr1.15\u0026hl=en-US\u0026"]],
[null, 0, 8, 8, [
[
[330000000, 1246050000],
[386200000, 1279600000]
],
[
[345000000, 1279600000],
[386200000, 1286700000]
],
[
[354690000, 1286700000],
[386200000, 1320035000]
]
], ["http://mt0.gmaptiles.co.kr/mt?v=kr1.15\u0026hl=en-US\u0026"]],
[null, 0, 9, 9, [
[
[330000000, 1246050000],
[386200000, 1279600000]
],
[
[340000000, 1279600000],
[386200000, 1286700000]
],
[
[348900000, 1286700000],
[386200000, 1302000000]
],
[
[368300000, 1302000000],
[386200000, 1320035000]
]
], ["http://mt0.gmaptiles.co.kr/mt?v=kr1.15\u0026hl=en-US\u0026"]],
[null, 0, 10, 19, [
[
[329890840, 1246055600],
[386930130, 1284960940]
],
[
[344646740, 1284960940],
[386930130, 1288476560]
],
[
[350277470, 1288476560],
[386930130, 1310531620]
],
[
[370277730, 1310531620],
[386930130, 1320034790]
]
], ["http://mt0.gmaptiles.co.kr/mt?v=kr1.15\u0026hl=en-US\u0026"]],
[null, 3, 7, 7, [
[
[330000000, 1246050000],
[386200000, 1293600000]
],
[
[366500000, 1297000000],
[386200000, 1320034790]
]
], ["http://mt0.gmaptiles.co.kr/mt?v=kr1p.12\u0026hl=en-US\u0026"]],
[null, 3, 8, 8, [
[
[330000000, 1246050000],
[386200000, 1279600000]
],
[
[345000000, 1279600000],
[386200000, 1286700000]
],
[
[354690000, 1286700000],
[386200000, 1320035000]
]
], ["http://mt0.gmaptiles.co.kr/mt?v=kr1p.12\u0026hl=en-US\u0026"]],
[null, 3, 9, 9, [
[
[330000000, 1246050000],
[386200000, 1279600000]
],
[
[340000000, 1279600000],
[386200000, 1286700000]
],
[
[348900000, 1286700000],
[386200000, 1302000000]
],
[
[368300000, 1302000000],
[386200000, 1320035000]
]
], ["http://mt0.gmaptiles.co.kr/mt?v=kr1p.12\u0026hl=en-US\u0026"]],
[null, 3, 10, null, [
[
[329890840, 1246055600],
[386930130, 1284960940]
],
[
[344646740, 1284960940],
[386930130, 1288476560]
],
[
[350277470, 1288476560],
[386930130, 1310531620]
],
[
[370277730, 1310531620],
[386930130, 1320034790]
]
], ["http://mt0.gmaptiles.co.kr/mt?v=kr1p.12\u0026hl=en-US\u0026"]]
],
[
["http://cbk0.googleapis.com/cbk?"]
],
[
["http://khmdb0.googleapis.com/kh?v=53\u0026hl=en-US\u0026"],
null,
null,
null,
null,
"53"
],
[
[
"http://mt0.googleapis.com/mapslt?hl=en-US\u0026"
]
],
[
[
"gmapcache/googleapis/mapslt/ft?hl=en-US\u0026"
]
],
[
[
"http://mt0.googleapis.com/vt?hl=en-US\u0026"
]
]
], [
"en-US",
"US",
null,
0,
null,
null,
"gmapcache/gstatic/",
"http://csi.gstatic.com",
"https://maps.googleapis.com",
"gmapcache/googleapis"
], [
"http://maps.gstatic.com/intl/en_us/mapfiles/api-3/8/5",
"3.8.5"
], [275480768],
1.0, null, null, null, null, 0, "", null, null, 0,
"http://khm.googleapis.com/mz?v=107\u0026",
null,
"https://earthbuilder.google.com",
"https://earthbuilder.googleapis.com"
], loadScriptTime);
};
var loadScriptTime = (new Date).getTime();
getScript("gmapcache/main.js");
getScript("gmapcache/components.js");
})();

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,21 @@
window.google = window.google || {};
google.maps = google.maps || {};
(function() {
function getScript(src) {
document.write('<' + 'script src="' + src + '"' +
' type="text/javascript"><' + '/script>');
}
var modules = google.maps.modules = {};
google.maps.__gjsload__ = function(name, text) {
modules[name] = text;
};
google.maps.Load = function(apiLoad) {
delete google.maps.Load;
apiLoad([null,[[["http://mt0.googleapis.com/vt?lyrs=m@174000000\u0026src=api\u0026hl=en-US\u0026","http://mt1.googleapis.com/vt?lyrs=m@174000000\u0026src=api\u0026hl=en-US\u0026"],null,null,null,null,"m@174000000"],[["http://khm0.googleapis.com/kh?v=107\u0026hl=en-US\u0026","http://khm1.googleapis.com/kh?v=107\u0026hl=en-US\u0026"],null,null,null,1,"107"],[["http://mt0.googleapis.com/vt?lyrs=h@174000000\u0026src=api\u0026hl=en-US\u0026","http://mt1.googleapis.com/vt?lyrs=h@174000000\u0026src=api\u0026hl=en-US\u0026"],null,null,"imgtp=png32\u0026",null,"h@174000000"],[["http://mt0.googleapis.com/vt?lyrs=t@128,r@174000000\u0026src=api\u0026hl=en-US\u0026","http://mt1.googleapis.com/vt?lyrs=t@128,r@174000000\u0026src=api\u0026hl=en-US\u0026"],null,null,null,null,"t@128,r@174000000"],null,[[null,0,7,7,[[[330000000,1246050000],[386200000,1293600000]],[[366500000,1297000000],[386200000,1320034790]]],["http://mt0.gmaptiles.co.kr/mt?v=kr1.15\u0026hl=en-US\u0026","http://mt1.gmaptiles.co.kr/mt?v=kr1.15\u0026hl=en-US\u0026"]],[null,0,8,8,[[[330000000,1246050000],[386200000,1279600000]],[[345000000,1279600000],[386200000,1286700000]],[[354690000,1286700000],[386200000,1320035000]]],["http://mt0.gmaptiles.co.kr/mt?v=kr1.15\u0026hl=en-US\u0026","http://mt1.gmaptiles.co.kr/mt?v=kr1.15\u0026hl=en-US\u0026"]],[null,0,9,9,[[[330000000,1246050000],[386200000,1279600000]],[[340000000,1279600000],[386200000,1286700000]],[[348900000,1286700000],[386200000,1302000000]],[[368300000,1302000000],[386200000,1320035000]]],["http://mt0.gmaptiles.co.kr/mt?v=kr1.15\u0026hl=en-US\u0026","http://mt1.gmaptiles.co.kr/mt?v=kr1.15\u0026hl=en-US\u0026"]],[null,0,10,19,[[[329890840,1246055600],[386930130,1284960940]],[[344646740,1284960940],[386930130,1288476560]],[[350277470,1288476560],[386930130,1310531620]],[[370277730,1310531620],[386930130,1320034790]]],["http://mt0.gmaptiles.co.kr/mt?v=kr1.15\u0026hl=en-US\u0026","http://mt1.gmaptiles.co.kr/mt?v=kr1.15\u0026hl=en-US\u0026"]],[null,3,7,7,[[[330000000,1246050000],[386200000,1293600000]],[[366500000,1297000000],[386200000,1320034790]]],["http://mt0.gmaptiles.co.kr/mt?v=kr1p.12\u0026hl=en-US\u0026","http://mt1.gmaptiles.co.kr/mt?v=kr1p.12\u0026hl=en-US\u0026"]],[null,3,8,8,[[[330000000,1246050000],[386200000,1279600000]],[[345000000,1279600000],[386200000,1286700000]],[[354690000,1286700000],[386200000,1320035000]]],["http://mt0.gmaptiles.co.kr/mt?v=kr1p.12\u0026hl=en-US\u0026","http://mt1.gmaptiles.co.kr/mt?v=kr1p.12\u0026hl=en-US\u0026"]],[null,3,9,9,[[[330000000,1246050000],[386200000,1279600000]],[[340000000,1279600000],[386200000,1286700000]],[[348900000,1286700000],[386200000,1302000000]],[[368300000,1302000000],[386200000,1320035000]]],["http://mt0.gmaptiles.co.kr/mt?v=kr1p.12\u0026hl=en-US\u0026","http://mt1.gmaptiles.co.kr/mt?v=kr1p.12\u0026hl=en-US\u0026"]],[null,3,10,null,[[[329890840,1246055600],[386930130,1284960940]],[[344646740,1284960940],[386930130,1288476560]],[[350277470,1288476560],[386930130,1310531620]],[[370277730,1310531620],[386930130,1320034790]]],["http://mt0.gmaptiles.co.kr/mt?v=kr1p.12\u0026hl=en-US\u0026","http://mt1.gmaptiles.co.kr/mt?v=kr1p.12\u0026hl=en-US\u0026"]]],[["http://cbk0.googleapis.com/cbk?","http://cbk1.googleapis.com/cbk?"]],[["http://khmdb0.googleapis.com/kh?v=53\u0026hl=en-US\u0026","http://khmdb1.googleapis.com/kh?v=53\u0026hl=en-US\u0026"],null,null,null,null,"53"],[["http://mt0.googleapis.com/mapslt?hl=en-US\u0026","http://mt1.googleapis.com/mapslt?hl=en-US\u0026"]],[["http://mt0.googleapis.com/mapslt/ft?hl=en-US\u0026","http://mt1.googleapis.com/mapslt/ft?hl=en-US\u0026"]],[["http://mt0.googleapis.com/vt?hl=en-US\u0026","http://mt1.googleapis.com/vt?hl=en-US\u0026"]]],["en-US","US",null,0,null,null,"http://maps.gstatic.com/mapfiles/","http://csi.gstatic.com","https://maps.googleapis.com","http://maps.googleapis.com"],["http://maps.gstatic.com/intl/en_us/mapfiles/api-3/8/5","3.8.5"],[275480768],1.0,null,null,null,null,0,"",null,null,0,"http://khm.googleapis.com/mz?v=107\u0026",null,"https://earthbuilder.google.com","https://earthbuilder.googleapis.com"], loadScriptTime);
};
var loadScriptTime = (new Date).getTime();
getScript("http://maps.gstatic.com/intl/en_us/mapfiles/api-3/8/5/main.js");
})();

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 326 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 326 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 620 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 574 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 B

View File

@ -0,0 +1,44 @@
(function(){function aa(a){throw a;}var ca=void 0,i=!0,j=null,k=!1,da=encodeURIComponent,m=window,ea=Object,fa=Infinity,n=document,o=Math,ga=Array,ha=screen,ia=navigator,ja=Error,ka=String,la=RegExp;function ma(a,b){return a.onload=b}function na(a,b){return a.center_changed=b}function oa(a,b){return a.isEmpty=b}function pa(a,b){return a.version=b}function ra(a,b){return a.width=b}function sa(a,b){return a.extend=b}function ta(a,b){return a.onerror=b}function ua(a,b){return a.map_changed=b}
function va(a,b){return a.visible_changed=b}function wa(a,b){return a.minZoom=b}function xa(a,b){return a.remove=b}function ya(a,b){return a.equals=b}function za(a,b){return a.setZoom=b}function Aa(a,b){return a.tileSize=b}function Ca(a,b){return a.getDetails=b}function Da(a,b){return a.getBounds=b}function Ea(a,b){return a.changed=b}function Fa(a,b){return a.clear=b}function Ga(a,b){return a.name=b}function Ha(a,b){return a.overflow=b}function Ia(a,b){return a.getTile=b}
function Ja(a,b){return a.toString=b}function Ka(a,b){return a.length=b}function La(a,b){return a.getZoom=b}function Ma(a,b){return a.size=b}function Na(a,b){return a.search=b}function Oa(a,b){return a.releaseTile=b}function Pa(a,b){return a.maxZoom=b}function Qa(a,b){return a.getUrl=b}function Ra(a,b){return a.contains=b}function Sa(a,b){return a.height=b}function Ta(a,b){return a.zoom=b}
var Ua="appendChild",p="push",Va="isEmpty",Xa="deviceXDPI",r="trigger",u="bindTo",Ya="shift",Za="exec",$a="clearTimeout",ab="fromLatLngToPoint",v="width",w="round",bb="slice",cb="replace",db="nodeType",eb="ceil",fb="floor",gb="getVisible",hb="offsetWidth",ib="concat",jb="removeListener",kb="extend",lb="charAt",mb="unbind",nb="preventDefault",ob="getNorthEast",pb="minZoom",rb="indexOf",sb="fromCharCode",tb="remove",ub="equals",vb="createElement",wb="atan2",xb="firstChild",yb="forEach",zb="setZoom",
Ab="sqrt",x="setAttribute",Bb="setValues",Cb="tileSize",Eb="toUrlValue",Fb="addListenerOnce",Gb="removeAt",Hb="changed",y="type",Ib="getTileUrl",Jb="clearInstanceListeners",A="bind",Kb="name",Lb="getTime",Mb="getElementsByTagName",Nb="substr",Ob="getTile",Pb="notify",Qb="toString",Rb="setVisible",B="length",Sb="onRemove",C="prototype",Tb="setTimeout",Vb="intersects",Wb="document",Xb="split",Yb="opacity",E="forward",Zb="getLength",$b="getSouthWest",ac="getAt",bc="message",cc="hasOwnProperty",F="style",
G="addListener",dc="removeChild",ec="insertAt",fc="target",gc="releaseTile",hc="call",ic="getMap",jc="atan",kc="random",lc="returnValue",mc="charCodeAt",nc="getArray",oc="href",pc="maxZoom",qc="console",rc="addDomListener",sc="setMap",tc="contains",uc="apply",vc="setAt",wc="tagName",xc="parentNode",yc="asin",zc="label",H="height",Ac="splice",Bc="offsetHeight",Cc="join",Dc="toLowerCase",Ec="ERROR",Fc="INVALID_REQUEST",Hc="MAX_DIMENSIONS_EXCEEDED",Ic="MAX_ELEMENTS_EXCEEDED",Jc="MAX_WAYPOINTS_EXCEEDED",
Kc="OK",Lc="OVER_QUERY_LIMIT",Mc="REQUEST_DENIED",Nc="UNKNOWN_ERROR",Oc="ZERO_RESULTS";function Pc(){return function(){}}function Qc(a){return function(){return this[a]}}var I,Rc=[];function Sc(a){return function(){return Rc[a][uc](this,arguments)}}var Tc={ROADMAP:"roadmap",SATELLITE:"satellite",HYBRID:"hybrid",TERRAIN:"terrain"};var Uc={TOP_LEFT:1,TOP_CENTER:2,TOP:2,TOP_RIGHT:3,LEFT_CENTER:4,LEFT_TOP:5,LEFT:5,LEFT_BOTTOM:6,RIGHT_TOP:7,RIGHT:7,RIGHT_CENTER:8,RIGHT_BOTTOM:9,BOTTOM_LEFT:10,BOTTOM_CENTER:11,BOTTOM:11,BOTTOM_RIGHT:12};var Vc=this;o[fb](2147483648*o[kc]())[Qb](36);function Wc(a){var b=a;if(a instanceof ga)b=[],Xc(b,a);else if(a instanceof ea){var c=b={},d;for(d in c)c[cc](d)&&delete c[d];for(var e in a)a[cc](e)&&(c[e]=Wc(a[e]))}return b}function Xc(a,b){Ka(a,b[B]);for(var c=0;c<b[B];++c)a[c]=Wc(b[c])}function Yc(a,b){a[b]||(a[b]=[]);return a[b]}function Zc(a,b){return a[b]?a[b][B]:0};var $c=la("'","g");function ad(a,b){var c=[];bd(a,b,c);return c[Cc]("&")[cb]($c,"%27")}function bd(a,b,c){for(var d=1;d<b.Y[B];++d){var e=b.Y[d],f=a[d+b.$];if(f!=j)if(3==e[zc])for(var g=0;g<f[B];++g)cd(f[g],d,e,c);else cd(f,d,e,c)}}function cd(a,b,c,d){if("m"==c[y]){var e=d[B];bd(a,c.V,d);d[Ac](e,0,[b,"m",d[B]-e][Cc](""))}else"b"==c[y]&&(a=a?"1":"0"),d[p]([b,c[y],da(a)][Cc](""))};function dd(a){this.l=a||[]}function ed(a){this.l=a||[]}var fd=new dd,gd=new dd;var hd={METRIC:0,IMPERIAL:1},id={DRIVING:"DRIVING",WALKING:"WALKING",BICYCLING:"BICYCLING"};var jd=o.abs,kd=o[eb],ld=o[fb],md=o.max,nd=o.min,od=o[w],pd="number",qd="object",rd="string",sd="undefined";function J(a){return a?a[B]:0}function td(){return i}function ud(a,b){for(var c=0,d=J(a);c<d;++c)if(a[c]===b)return i;return k}function vd(a,b){wd(b,function(c){a[c]=b[c]})}function xd(a){for(var b in a)return k;return i}function L(a,b){function c(){}c.prototype=b[C];a.prototype=new c}function yd(a,b,c){b!=j&&(a=o.max(a,b));c!=j&&(a=o.min(a,c));return a}
function zd(a,b,c){return((a-b)%(c-b)+(c-b))%(c-b)+b}function Ad(a,b){return 1.0E-9>=o.abs(a-b)}function M(a){return a*(o.PI/180)}function Bd(a){return a/(o.PI/180)}function Cd(a,b){for(var c=Dd(ca,J(b)),d=Dd(ca,0);d<c;++d)a[p](b[d])}function Ed(a){return typeof a!=sd}function N(a){return typeof a==pd}function Fd(a){return typeof a==qd}function Hd(){}function Dd(a,b){return a==j?b:a}function Id(a){a[cc]("_instance")||(a._instance=new a);return a._instance}function Jd(a){return typeof a==rd}
function O(a,b){if(a)for(var c=0,d=J(a);c<d;++c)b(a[c],c)}function wd(a,b){for(var c in a)b(c,a[c])}function P(a,b,c){if(2<arguments[B]){var d=Kd(arguments,2);return function(){return b[uc](a||this,0<arguments[B]?d[ib](Ld(arguments)):d)}}return function(){return b[uc](a||this,arguments)}}function Md(a,b,c){var d=Kd(arguments,2);return function(){return b[uc](a,d)}}function Kd(a,b,c){return Function[C][hc][uc](ga[C][bb],arguments)}function Ld(a){return ga[C][bb][hc](a,0)}
function Nd(){return(new Date)[Lb]()}function Od(a,b){if(a)return function(){--a||b()};b();return Hd}function Pd(a){return a!=j&&typeof a==qd&&typeof a[B]==pd}function Qd(a){var b="";O(arguments,function(a){J(a)&&"/"==a[0]?b=a:(b&&"/"!=b[J(b)-1]&&(b+="/"),b+=a)});return b}function Rd(a){a=a||m.event;Sd(a);Td(a);return k}function Sd(a){a.cancelBubble=i;a.stopPropagation&&a.stopPropagation()}function Td(a){a.returnValue=k;a[nb]&&a[nb]()}
function Ud(a){a.returnValue=a[lc]?"true":"";typeof a[lc]!=rd?a.handled=i:a.returnValue="true"}function Vd(a){return function(){var b=this,c=arguments;Wd(function(){a[uc](b,c)})}}function Wd(a){return m[Tb](a,0)}function Xd(a,b){var c=a[Mb]("head")[0],d=a[vb]("script");d[x]("type","text/javascript");d[x]("charset","UTF-8");d[x]("src",b);c[Ua](d)};function Q(a,b,c){a-=0;b-=0;c||(a=yd(a,-90,90),b=zd(b,-180,180));this.Ta=a;this.Ua=b}I=Q[C];Ja(I,function(){return"("+this.lat()+", "+this.lng()+")"});ya(I,function(a){return!a?k:Ad(this.lat(),a.lat())&&Ad(this.lng(),a.lng())});I.lat=Qc("Ta");I.lng=Qc("Ua");function Yd(a,b){var c=o.pow(10,b);return o[w](a*c)/c}I.toUrlValue=function(a){a=Ed(a)?a:6;return Yd(this.lat(),a)+","+Yd(this.lng(),a)};function Zd(a,b){-180==a&&180!=b&&(a=180);-180==b&&180!=a&&(b=180);this.b=a;this.e=b}function $d(a){return a.b>a.e}I=Zd[C];oa(I,function(){return 360==this.b-this.e});I.intersects=function(a){var b=this.b,c=this.e;return this[Va]()||a[Va]()?k:$d(this)?$d(a)||a.b<=this.e||a.e>=b:$d(a)?a.b<=c||a.e>=b:a.b<=c&&a.e>=b};Ra(I,function(a){-180==a&&(a=180);var b=this.b,c=this.e;return $d(this)?(a>=b||a<=c)&&!this[Va]():a>=b&&a<=c});
sa(I,function(a){this[tc](a)||(this[Va]()?this.b=this.e=a:ae(a,this.b)<ae(this.e,a)?this.b=a:this.e=a)});ya(I,function(a){return 1.0E-9>=o.abs(a.b-this.b)%360+o.abs(be(a)-be(this))});function ae(a,b){var c=b-a;return 0<=c?c:b+180-(a-180)}function be(a){return a[Va]()?0:$d(a)?360-(a.b-a.e):a.e-a.b}I.ob=function(){var a=(this.b+this.e)/2;$d(this)&&(a=zd(a+180,-180,180));return a};function ce(a,b){this.b=a;this.e=b}I=ce[C];oa(I,function(){return this.b>this.e});
I.intersects=function(a){var b=this.b,c=this.e;return b<=a.b?a.b<=c&&a.b<=a.e:b<=a.e&&b<=c};Ra(I,function(a){return a>=this.b&&a<=this.e});sa(I,function(a){this[Va]()?this.e=this.b=a:a<this.b?this.b=a:a>this.e&&(this.e=a)});ya(I,function(a){return this[Va]()?a[Va]():1.0E-9>=o.abs(a.b-this.b)+o.abs(this.e-a.e)});I.ob=function(){return(this.e+this.b)/2};function de(a,b){a&&!b&&(b=a);if(a){var c=yd(a.lat(),-90,90),d=yd(b.lat(),-90,90);this.aa=new ce(c,d);c=a.lng();d=b.lng();360<=d-c?this.ba=new Zd(-180,180):(c=zd(c,-180,180),d=zd(d,-180,180),this.ba=new Zd(c,d))}else this.aa=new ce(1,-1),this.ba=new Zd(180,-180)}I=de[C];I.getCenter=function(){return new Q(this.aa.ob(),this.ba.ob())};Ja(I,function(){return"("+this[$b]()+", "+this[ob]()+")"});I.toUrlValue=function(a){var b=this[$b](),c=this[ob]();return[b[Eb](a),c[Eb](a)][Cc]()};
ya(I,function(a){return!a?k:this.aa[ub](a.aa)&&this.ba[ub](a.ba)});Ra(I,function(a){return this.aa[tc](a.lat())&&this.ba[tc](a.lng())});I.intersects=function(a){return this.aa[Vb](a.aa)&&this.ba[Vb](a.ba)};I.Va=Sc(4);sa(I,function(a){this.aa[kb](a.lat());this.ba[kb](a.lng());return this});I.union=function(a){this[kb](a[$b]());this[kb](a[ob]());return this};I.getSouthWest=function(){return new Q(this.aa.b,this.ba.b,i)};I.getNorthEast=function(){return new Q(this.aa.e,this.ba.e,i)};
I.toSpan=function(){return new Q(this.aa[Va]()?0:this.aa.e-this.aa.b,be(this.ba),i)};oa(I,function(){return this.aa[Va]()||this.ba[Va]()});function ee(a,b){return function(c){if(!b)for(var d in c)a[d]||aa(ja("Unknown property <"+(d+">")));var e;for(d in a)try{var f=c[d];if(!a[d](f)){e="Invalid value for property <"+(d+(">: "+f));break}}catch(g){e="Error in property <"+(d+(">: ("+(g[bc]+")")));break}e&&aa(ja(e));return i}}function fe(a){return a==j}function ge(a){try{return!!a.cloneNode}catch(b){return k}}function he(a,b){var c=Ed(b)?b:i;return function(b){return b==j&&c||b instanceof a}}
function ie(a){return function(b){for(var c in a)if(a[c]==b)return i;return k}}function je(a){return function(b){Pd(b)||aa(ja("Value is not an array"));var c;O(b,function(b,e){try{a(b)||(c="Invalid value at position "+(e+(": "+b)))}catch(f){c="Error in element at position "+(e+(": ("+(f[bc]+")")))}});c&&aa(ja(c));return i}}
function ke(a){var b=arguments,c=b[B];return function(){for(var a=[],e=0;e<c;++e)try{if(b[e][uc](this,arguments))return i}catch(f){a[p](f[bc])}J(a)&&aa(ja("Invalid value: "+(arguments[0]+(" ("+(a[Cc](" | ")+")")))));return k}}var le=ke(N,fe),me=ke(Jd,fe),ne=ke(function(a){return a===!!a},fe),oe=ke(he(Q,k),Jd),pe=je(oe);var qe=ee({routes:je(ee({},i))},i);var re="geometry",se="drawing_impl",te="geocoder",ue="infowindow",ve="layers",we="map",xe="marker",ye="maxzoom",ze="onion",Ae="places_impl",Be="poly",Ce="search_impl",De="stats",Ee="usage";var Fe={main:[],common:["main"],util:["common"],adsense:["main"],adsense_impl:["util"],controls:["util"]};Fe.directions=["util",re];Fe.distance_matrix=["util"];Fe.drawing=["main"];Fe[se]=["controls"];Fe.visualization=["main"];Fe.visualization_impl=["util"];Fe.earthbuilder_impl=[ze];Fe.elevation=["util",re];Fe.buzz=["main"];Fe[te]=["util"];Fe[re]=["main"];Fe[ue]=["util"];Fe.kml=[ze,"util",we];Fe[ve]=[we];Fe[we]=["common"];Fe[xe]=["util"];Fe[ye]=["util"];Fe[ze]=["util",we];Fe.overlay=["common"];
Fe.panoramio=["main"];Fe.places=["main"];Fe[Ae]=["controls"];Fe[Be]=["util",we];Na(Fe,["main"]);Fe[Ce]=[ze];Fe[De]=["util"];Fe.streetview=["util",re];Fe[Ee]=["util"];Fe.weather=["main"];Fe.weather_impl=[ze];function Ge(a,b){this.e=a;this.n={};this.d=[];this.b=j;this.f=(this.j=!!b.match(/^https?:\/\/[^:\/]*\/intl/))?b[cb]("/intl","/cat_js/intl"):b}function He(a,b){a.n[b]||(a.j?(a.d[p](b),a.b||(a.b=m[Tb](P(a,a.A),0))):Xd(a.e,Qd(a.f,b)+".js"))}Ge[C].A=function(){var a=Qd(this.f,"%7B"+this.d[Cc](",")+"%7D.js");Ka(this.d,0);m[$a](this.b);this.b=j;Xd(this.e,a)};var Ie="click",Je="contextmenu",Ke="forceredraw",Le="staticmaploaded",Me="panby",Ne="panto",Oe="insert",Pe="remove";var R={};R.df=function(){return this}().navigator&&-1!=ia.userAgent[Dc]()[rb]("msie");R.Vc={};R.addListener=function(a,b,c){return new Qe(a,b,c,0)};R.qe=function(a,b){var c=a.__e3_,c=c&&c[b];return!!c&&!xd(c)};R.removeListener=function(a){a[tb]()};R.clearListeners=function(a,b){wd(Re(a,b),function(a,b){b&&b[tb]()})};R.clearInstanceListeners=function(a){wd(Re(a),function(a,c){c&&c[tb]()})};function Se(a,b){a.__e3_||(a.__e3_={});var c=a.__e3_;c[b]||(c[b]={});return c[b]}
function Re(a,b){var c,d=a.__e3_||{};if(b)c=d[b]||{};else{c={};for(var e in d)vd(c,d[e])}return c}R.trigger=function(a,b,c){if(R.qe(a,b)){var d=Kd(arguments,2),e=Re(a,b),f;for(f in e){var g=e[f];g&&g.d[uc](g.b,d)}}};R.addDomListener=function(a,b,c,d){if(a.addEventListener){var e=d?4:1;a.addEventListener(b,c,d);c=new Qe(a,b,c,e)}else a.attachEvent?(c=new Qe(a,b,c,2),a.attachEvent("on"+b,Te(c))):(a["on"+b]=c,c=new Qe(a,b,c,3));return c};
R.addDomListenerOnce=function(a,b,c,d){var e=R[rc](a,b,function(){e[tb]();return c[uc](this,arguments)},d);return e};R.R=function(a,b,c,d){c=Ue(c,d);return R[rc](a,b,c)};function Ue(a,b){return function(c){return b[hc](a,c,this)}}R.bind=function(a,b,c,d){return R[G](a,b,P(c,d))};R.addListenerOnce=function(a,b,c){var d=R[G](a,b,function(){d[tb]();return c[uc](this,arguments)});return d};R.forward=function(a,b,c){return R[G](a,b,Ve(b,c))};R.va=function(a,b,c,d){return R[rc](a,b,Ve(b,c,!d))};
R.wg=function(){var a=R.Vc,b;for(b in a)a[b][tb]();R.Vc={};(a=Vc.CollectGarbage)&&a()};function Ve(a,b,c){return function(d){var e=[b,a];Cd(e,arguments);R[r][uc](this,e);c&&Ud[uc](j,arguments)}}function Qe(a,b,c,d){this.b=a;this.e=b;this.d=c;this.f=j;this.j=d;this.id=++We;Se(a,b)[this.id]=this;R.df&&"tagName"in a&&(R.Vc[this.id]=this)}var We=0;
function Te(a){return a.f=function(b){b||(b=m.event);if(b&&!b[fc])try{b.target=b.srcElement}catch(c){}var d=a.d[uc](a.b,[b]);return b&&Ie==b[y]&&(b=b.srcElement)&&"A"==b[wc]&&"javascript:void(0)"==b[oc]?k:d}}
xa(Qe[C],function(){if(this.b){switch(this.j){case 1:this.b.removeEventListener(this.e,this.d,k);break;case 4:this.b.removeEventListener(this.e,this.d,i);break;case 2:this.b.detachEvent("on"+this.e,this.f);break;case 3:this.b["on"+this.e]=j}delete Se(this.b,this.e)[this.id];this.f=this.d=this.b=j;delete R.Vc[this.id]}});function Xe(a,b){this.e=a;this.b=b;this.d=Ye(b)}function Ye(a){var b={};wd(a,function(a,d){O(d,function(d){b[d]||(b[d]=[]);b[d][p](a)})});return b}function Ze(){this.b=[]}Ze[C].Ab=function(a,b){var c=new Ge(n,a),d=this.e=new Xe(c,b);O(this.b,function(a){a(d)});Ka(this.b,0)};Ze[C].Vd=function(a){this.e?a(this.e):this.b[p](a)};function $e(){this.f={};this.b={};this.j={};this.e={};this.d=new Ze}$e[C].Ab=function(a,b){this.d.Ab(a,b)};
function af(a,b){a.f[b]||(a.f[b]=i,a.d.Vd(function(c){O(c.b[b],function(b){a.e[b]||af(a,b)});He(c.e,b)}))}function bf(a,b,c){a.e[b]=c;O(a.b[b],function(a){a(c)});delete a.b[b]}$e[C].Dc=function(a,b){var c=this,d=c.j;c.d.Vd(function(e){var f=e.b[a]||[],g=e.d[a]||[],h=d[a]=Od(f[B],function(){delete d[a];cf[f[0]](b);O(g,function(a){d[a]&&d[a]()})});O(f,function(a){c.e[a]&&h()})})};function df(a,b){Id($e).Dc(a,b)}var cf={},ef=Vc.google.maps;ef.__gjsload__=df;wd(ef.modules,df);delete ef.modules;function S(a,b,c){var d=Id($e);if(d.e[a])b(d.e[a]);else{var e=d.b;e[a]||(e[a]=[]);e[a][p](b);c||af(d,a)}}function ff(a,b){bf(Id($e),a,b)}function gf(a){var b=Fe;Id($e).Ab(a,b)}function hf(a){var b=Yc(jf.l,12),c=[],d=Od(J(b),function(){a[uc](j,c)});O(b,function(a,b){S(a,function(a){c[b]=a;d()},i)})};function kf(){}kf[C].route=function(a,b){S("directions",function(c){c.Vg(a,b,i)})};function T(a,b){this.x=a;this.y=b}var lf=new T(0,0);Ja(T[C],function(){return"("+this.x+", "+this.y+")"});ya(T[C],function(a){return!a?k:a.x==this.x&&a.y==this.y});T[C].round=function(){this.x=od(this.x);this.y=od(this.y)};T[C].Zc=Sc(0);function U(a,b,c,d){ra(this,a);Sa(this,b);this.B=c||"px";this.n=d||"px"}var mf=new U(0,0);Ja(U[C],function(){return"("+this[v]+", "+this[H]+")"});ya(U[C],function(a){return!a?k:a[v]==this[v]&&a[H]==this[H]});function nf(a){this.F=this.D=fa;this.G=this.J=-fa;O(a,P(this,this[kb]))}function of(a,b,c,d){var e=new nf;e.F=a;e.D=b;e.G=c;e.J=d;return e}I=nf[C];oa(I,function(){return!(this.F<this.G&&this.D<this.J)});sa(I,function(a){a&&(this.F=nd(this.F,a.x),this.G=md(this.G,a.x),this.D=nd(this.D,a.y),this.J=md(this.J,a.y))});I.getCenter=function(){return new T((this.F+this.G)/2,(this.D+this.J)/2)};ya(I,function(a){return!a?k:this.F==a.F&&this.D==a.D&&this.G==a.G&&this.J==a.J});I.Va=Sc(3);
var pf=of(-fa,-fa,fa,fa),qf=of(0,0,0,0);function V(){}I=V[C];I.get=function(a){var b=rf(this)[a];if(b){var a=b.tb,b=b.Qe,c="get"+sf(a);return b[c]?b[c]():b.get(a)}return this[a]};I.set=function(a,b){var c=rf(this);if(c[cc](a)){var d=c[a],c=d.tb,d=d.Qe,e="set"+sf(c);if(d[e])d[e](b);else d.set(c,b)}else this[a]=b,tf(this,a)};I.notify=function(a){var b=rf(this);b[cc](a)?(a=b[a],a.Qe[Pb](a.tb)):tf(this,a)};I.setValues=function(a){for(var b in a){var c=a[b],d="set"+sf(b);if(this[d])this[d](c);else this.set(b,c)}};I.setOptions=V[C][Bb];
Ea(I,Pc());function tf(a,b){var c=b+"_changed";if(a[c])a[c]();else a[Hb](b);R[r](a,b[Dc]()+"_changed")}var uf={};function sf(a){return uf[a]||(uf[a]=a[Nb](0,1).toUpperCase()+a[Nb](1))}function vf(a,b,c,d,e){rf(a)[b]={Qe:c,tb:d};e||tf(a,b)}function rf(a){a.gm_accessors_||(a.gm_accessors_={});return a.gm_accessors_}function wf(a){a.gm_bindings_||(a.gm_bindings_={});return a.gm_bindings_}
V[C].bindTo=function(a,b,c,d){var c=c||a,e=this;e[mb](a);wf(e)[a]=R[G](b,c[Dc]()+"_changed",function(){tf(e,a)});vf(e,a,b,c,d)};V[C].unbind=function(a){var b=wf(this)[a];b&&(delete wf(this)[a],R[jb](b),b=this.get(a),delete rf(this)[a],this[a]=b)};V[C].unbindAll=function(){var a=[];wd(wf(this),function(b){a[p](b)});O(a,P(this,this[mb]))};var xf=V;function yf(a,b,c){this.heading=a;this.pitch=yd(b,-90,90);Ta(this,o.max(0,c))}var zf=ee({zoom:N,heading:N,pitch:N});function Af(a){if(!Fd(a)||!a)return""+a;a.__gm_id||(a.__gm_id=++Bf);return""+a.__gm_id}var Bf=0;function Cf(){this.ua={}}Cf[C].X=function(a){var b=this.ua,c=Af(a);b[c]||(b[c]=a,R[r](this,Oe,a),this.b&&this.b(a))};xa(Cf[C],function(a){var b=this.ua,c=Af(a);b[c]&&(delete b[c],R[r](this,Pe,a),this[Sb]&&this[Sb](a))});Ra(Cf[C],function(a){return!!this.ua[Af(a)]});Cf[C].forEach=function(a){var b=this.ua,c;for(c in b)a[hc](this,b[c])};function Df(a){return function(){return this.get(a)}}function Ef(a,b){return b?function(c){b(c)||aa(ja("Invalid value for property <"+(a+(">: "+c))));this.set(a,c)}:function(b){this.set(a,b)}}function Ff(a,b){wd(b,function(b,d){var e=Df(b);a["get"+sf(b)]=e;d&&(e=Ef(b,d),a["set"+sf(b)]=e)})};var Gf="set_at",Hf="insert_at",If="remove_at";function Jf(a){this.b=a||[];Kf(this)}L(Jf,V);I=Jf[C];I.getAt=function(a){return this.b[a]};I.forEach=function(a){for(var b=0,c=this.b[B];b<c;++b)a(this.b[b],b)};I.setAt=function(a,b){var c=this.b[a],d=this.b[B];if(a<d)this.b[a]=b,R[r](this,Gf,a,c),this.gc&&this.gc(a,c);else{for(c=d;c<a;++c)this[ec](c,ca);this[ec](a,b)}};I.insertAt=function(a,b){this.b[Ac](a,0,b);Kf(this);R[r](this,Hf,a);this.ec&&this.ec(a)};
I.removeAt=function(a){var b=this.b[a];this.b[Ac](a,1);Kf(this);R[r](this,If,a,b);this.fc&&this.fc(a,b);return b};I.push=function(a){this[ec](this.b[B],a);return this.b[B]};I.pop=function(){return this[Gb](this.b[B]-1)};I.getArray=Qc("b");function Kf(a){a.set("length",a.b[B])}Fa(I,function(){for(;this.get("length");)this.pop()});Ff(Jf[C],{length:ca});function Lf(){}L(Lf,V);var Mf=V;function Nf(a,b){this.b=a||0;this.e=b||0}Nf[C].heading=Qc("b");Nf[C].Ba=Sc(8);var Of=new Nf;function Pf(){}L(Pf,V);Pf[C].set=function(a,b){b!=j&&(!b||!N(b[pc])||!b[Cb]||!b[Cb][v]||!b[Cb][H]||!b[Ob]||!b[Ob][uc])&&aa(ja("Expected value implementing google.maps.MapType"));return V[C].set[uc](this,arguments)};function Qf(){this.f=[];this.e=this.b=this.d=j};function Rf(){}L(Rf,V);var Sf=[];function Tf(a){this[Bb](a)}L(Tf,V);Ff(Tf[C],{content:ke(fe,Jd,ge),position:he(Q),size:he(U),map:ke(he(Rf),he(Lf)),anchor:he(V),zIndex:le});function Uf(a){this[Bb](a);m[Tb](function(){S(ue,Hd)},100)}L(Uf,Tf);Uf[C].open=function(a,b){this.set("anchor",b);this.set("map",a)};Uf[C].close=function(){this.set("map",j)};Ea(Uf[C],function(a){var b=this;S(ue,function(c){c[Hb](b,a)})});function Vf(a,b,c,d,e){this.url=a;Ma(this,b||e);this.origin=c;this.anchor=d;this.scaledSize=e};function Wf(a){this[Bb](a)}L(Wf,V);Ea(Wf[C],function(a){if("map"==a||"panel"==a){var b=this;S("directions",function(c){c.Pk(b,a)})}});Ff(Wf[C],{directions:qe,map:he(Rf),panel:ke(ge,fe),routeIndex:le});function Xf(){}Xf[C].getDistanceMatrix=function(a,b){S("distance_matrix",function(c){c.b(a,b)})};function Yf(){}Yf[C].getElevationAlongPath=function(a,b){S("elevation",function(c){c.b(a,b)})};Yf[C].getElevationForLocations=function(a,b){S("elevation",function(c){c.e(a,b)})};var Zf,$f;function ag(){S(te,Hd)}ag[C].geocode=function(a,b){S(te,function(c){c.geocode(a,b)})};function bg(a,b,c){this.e=j;this.set("url",a);this.set("bounds",b);this[Bb](c)}L(bg,V);ua(bg[C],function(){var a=this,b=a.e,c=a.e=a.get("map");b!=c&&(b&&b.d[tb](a),c&&c.d.X(a),S("kml",function(b){b.nj(a,a.get("map"))}))});Ff(bg[C],{map:he(Rf),url:j,bounds:j,opacity:le});function cg(a,b){this.set("url",a);this[Bb](b)}L(cg,V);ua(cg[C],function(){var a=this;S("kml",function(b){b.Kk(a)})});Ff(cg[C],{map:he(Rf),defaultViewport:j,metadata:j,status:j,url:j});var dg={UNKNOWN:"UNKNOWN",OK:Kc,INVALID_REQUEST:Fc,DOCUMENT_NOT_FOUND:"DOCUMENT_NOT_FOUND",FETCH_ERROR:"FETCH_ERROR",INVALID_DOCUMENT:"INVALID_DOCUMENT",DOCUMENT_TOO_LARGE:"DOCUMENT_TOO_LARGE",LIMITS_EXCEEDED:"LIMITS_EXECEEDED",TIMED_OUT:"TIMED_OUT"};function eg(){S(ve,Hd)}L(eg,V);ua(eg[C],function(){var a=this;S(ve,function(b){b.b(a)})});Ff(eg[C],{map:he(Rf)});function fg(){S(ve,Hd)}L(fg,V);ua(fg[C],function(){var a=this;S(ve,function(b){b.e(a)})});Ff(fg[C],{map:he(Rf)});function gg(a){this.l=a||[]}function hg(a){this.l=a||[]}var ig=new gg,jg=new gg,kg=new hg;function lg(a){this.l=a||[]}function mg(a){this.l=a||[]}function ng(a){this.l=a||[]}function og(a){this.l=a||[]}function pg(a){this.l=a||[]}function qg(a){this.l=a||[]}Qa(lg[C],function(a){return Yc(this.l,0)[a]});var rg=new lg,sg=new lg,tg=new lg,ug=new lg,vg=new lg,wg=new lg,xg=new lg,yg=new lg,zg=new lg;function Ag(a){a=a.l[0];return a!=j?a:""}function Bg(){var a=Cg(jf).l[1];return a!=j?a:""}function Dg(){var a=Cg(jf).l[9];return a!=j?a:""}function Eg(a){a=a.l[0];return a!=j?a:""}
function Fg(a){a=a.l[1];return a!=j?a:""}function Gg(){var a=jf.l[4],a=(a?new pg(a):Hg).l[0];return a!=j?a:0}function Ig(){var a=jf.l[5];return a!=j?a:1}function Jg(){var a=jf.l[11];return a!=j?a:""}var Kg=new mg,Lg=new ng;function Cg(a){return(a=a.l[2])?new ng(a):Lg}var Mg=new og;function Ng(){var a=jf.l[3];return a?new og(a):Mg}var Hg=new pg;var jf;function Og(){this.b=new T(128,128);this.e=256/360;this.d=256/(2*o.PI)}Og[C].fromLatLngToPoint=function(a,b){var c=b||new T(0,0),d=this.b;c.x=d.x+a.lng()*this.e;var e=yd(o.sin(M(a.lat())),-(1-1.0E-15),1-1.0E-15);c.y=d.y+0.5*o.log((1+e)/(1-e))*-this.d;return c};Og[C].fromPointToLatLng=function(a,b){var c=this.b;return new Q(Bd(2*o[jc](o.exp((a.y-c.y)/-this.d))-o.PI/2),(a.x-c.x)/this.e,b)};function Pg(a,b,c){if(a=a[ab](b))c=o.pow(2,c),a.x*=c,a.y*=c;return a};function Qg(a,b){var c=a.lat()+Bd(b);90<c&&(c=90);var d=a.lat()-Bd(b);-90>d&&(d=-90);var e=o.sin(b),f=o.cos(M(a.lat()));if(90==c||-90==d||1.0E-6>f)return new de(new Q(d,-180),new Q(c,180));e=Bd(o[yc](e/f));return new de(new Q(d,a.lng()-e),new Q(c,a.lng()+e))};function Rg(a){this.Yb=a||0;this.Sb=R[A](this,Ke,this,this.I)}L(Rg,V);Rg[C].O=function(){var a=this;a.f||(a.f=m[Tb](function(){a.f=ca;a.Z()},a.Yb))};Rg[C].I=function(){this.f&&m[$a](this.f);this.f=ca;this.Z()};Rg[C].Z=Pc();Rg[C].Q=Sc(2);function Sg(a,b){var c=a[F];ra(c,b[v]+b.B);Sa(c,b[H]+b.n)}function Tg(a){return new U(a[hb],a[Bc])};function Ug(a){this.l=a||[]}var Vg;function Wg(a){this.l=a||[]}var Xg;function Yg(a){this.l=a||[]}var Zg;function $g(a){this.l=a||[]}var ah;
function bh(a){if(!ah){var b=[];ah={$:-1,Y:b};if(!Xg){var c=[];Xg={$:-1,Y:c};c[1]={type:"i",label:1};c[2]={type:"i",label:1}}b[1]={type:"m",label:1,V:Xg};b[2]={type:"e",label:1};b[3]={type:"u",label:1};Zg||(c=[],Zg={$:-1,Y:c},c[1]={type:"u",label:1},c[2]={type:"u",label:1},c[3]={type:"e",label:1});b[4]={type:"m",label:1,V:Zg};Vg||(c=[],Vg={$:-1,Y:c},c[1]={type:"e",label:1},c[2]={type:"b",label:1},c[3]={type:"b",label:1},c[5]={type:"s",label:1},c[6]={type:"s",label:1},c[100]={type:"b",label:1});b[5]=
{type:"m",label:1,V:Vg}}return ad(a.l,ah)}La($g[C],function(){var a=this.l[2];return a!=j?a:0});za($g[C],function(a){this.l[2]=a});function ch(a,b,c){Rg[hc](this);this.A=b;this.n=new Og;this.B=c+"/maps/api/js/StaticMapService.GetMapImage";this.set("div",a)}L(ch,Rg);var dh={roadmap:0,satellite:2,hybrid:3,terrain:4},eh={"0":1,2:2,3:2,4:2};I=ch[C];I.bf=Df("center");I.af=Df("zoom");function fh(a){var b=a.get("tilt")||a.get("mapMaker")||J(a.get("styles")),a=a.get("mapTypeId");return b?j:dh[a]}
Ea(I,function(){var a=this.bf(),b=this.af(),c=fh(this);if(a&&!a[ub](this.C)||this.d!=b||this.H!=c)gh(this.j),this.O(),this.d=b,this.H=c;this.C=a});function gh(a){a[xc]&&a[xc][dc](a)}
I.Z=function(){var a="",b=this.bf(),c=this.af(),d=fh(this),e=this.get("size");if(b&&1<c&&d!=j&&e&&e[v]&&e[H]&&this.b){Sg(this.b,e);var f;(b=Pg(this.n,b,c))?(f=new nf,f.F=o[w](b.x-e[v]/2),f.G=f.F+e[v],f.D=o[w](b.y-e[H]/2),f.J=f.D+e[H]):f=j;b=eh[d];if(f){var a=new $g,g=1<(22>c&&(m.devicePixelRatio||ha[Xa]&&ha[Xa]/96||1))?2:1,h;a.l[0]=a.l[0]||[];h=new Wg(a.l[0]);h.l[0]=f.F*g;h.l[1]=f.D*g;a.l[1]=b;a[zb](c);a.l[3]=a.l[3]||[];c=new Yg(a.l[3]);c.l[0]=(f.G-f.F)*g;c.l[1]=(f.J-f.D)*g;1<g&&(c.l[2]=2);a.l[4]=
a.l[4]||[];c=new Ug(a.l[4]);c.l[0]=d;c.l[1]=i;c.l[4]=Ag(Cg(jf));d=Bg()[Dc]();if("cn"==d||"in"==d||"kr"==d)c.l[5]=d;a=this.A(this.B+unescape("%3F")+bh(a))}}this.j&&e&&(Sg(this.j,e),e=a,d=this.j,e!=d.src?(gh(d),ma(d,Md(this,this.zf,i)),ta(d,Md(this,this.zf,k)),d.src=e):!d[xc]&&e&&this.b[Ua](d))};I.zf=function(a){var b=this.j;ma(b,j);ta(b,j);a&&(b[xc]||this.b[Ua](b),Sg(b,this.get("size")),R[r](this,Le))};
I.div_changed=function(){var a=this.get("div"),b=this.b;if(a)if(b)a[Ua](b);else{b=this.b=n[vb]("div");Ha(b[F],"hidden");var c=this.j=n[vb]("img");R[rc](b,Je,Td);c.ontouchstart=c.ontouchmove=c.ontouchend=c.ontouchcancel=Rd;Sg(c,mf);a[Ua](b);this.Z()}else b&&(gh(b),this.b=j)};function hh(a){this.b=[];this.e=a||Nd()}var ih;function jh(a,b,c){c=c||Nd()-a.e;ih&&a.b[p]([b,c]);return c};var kh;function lh(a,b){var c=this;c.f=new V;var d=c.controls=[];wd(Uc,function(a,b){d[b]=new Jf});c.N=a;c.setPov(new yf(0,0,1));c[Bb](b);c[gb]()==ca&&c[Rb](i);c.Ub=b&&b.Ub||new Cf;R[Fb](this,"pano_changed",Vd(function(){S(xe,function(a){a.b(c.Ub,c)})}))}L(lh,Lf);va(lh[C],function(){var a=this;!a.d&&a[gb]()&&(a.d=i,S("streetview",function(b){b.f(a)}))});Ff(lh[C],{visible:ne,pano:me,position:he(Q),pov:ke(zf,fe),links:ca,enableCloseButton:ne});lh[C].getContainer=Qc("N");lh[C].M=Qc("f");
lh[C].registerPanoProvider=Ef("panoProvider");function mh(a,b){var c=new nh(b);for(c.b=[a];J(c.b);){var d=c,e=c.b[Ya]();d.e(e);for(e=e[xb];e;e=e.nextSibling)1==e[db]&&d.b[p](e)}}function nh(a){this.e=a};var oh=Vc[Wb]&&Vc[Wb][vb]("div");function ph(a){for(var b;b=a[xb];)qh(b),a[dc](b)}function qh(a){mh(a,function(a){R[Jb](a)})};function rh(a,b){kh&&jh(kh,"mc");var c=this,d=b||{};c[Bb](d);c.d=new Cf;c.Tb=new Jf;c.mapTypes=new Pf;c.features=new xf;var e=c.Ub=new Cf;e.b=function(){delete e.b;S(xe,Vd(function(a){a.b(e,c)}))};c.$d=new Cf;c.ee=new Cf;c.ce=new Cf;Sf[p](a);c.B=new lh(a,{visible:k,enableCloseButton:i,Ub:e});c[Pb]("streetView");c.b=a;var f=Tg(a);d.noClear||ph(a);var g=j;sh(d.useStaticMap,f)&&(g=new ch(a,Zf,Dg()),R[E](g,Le,this),R[Fb](g,Le,function(){jh(kh,"smv")}),g.set("size",f),g[u]("center",c),g[u]("zoom",c),g[u]("mapTypeId",
c),g[u]("styles",c),g[u]("mapMaker",c));c.n=new Mf;c.overlayMapTypes=new Jf;var h=c.controls=[];wd(Uc,function(a,b){h[b]=new Jf});c.j=new Qf;S(we,function(a){a.Ph(c,d,g)})}L(rh,Rf);I=rh[C];I.streetView_changed=function(){this.get("streetView")||this.set("streetView",this.B)};I.getDiv=Qc("b");I.M=Qc("n");I.panBy=function(a,b){var c=this.n;S(we,function(){R[r](c,Me,a,b)})};I.panTo=function(a){var b=this.n;S(we,function(){R[r](b,Ne,a)})};
I.panToBounds=function(a){var b=this.n;S(we,function(){R[r](b,"pantolatlngbounds",a)})};I.fitBounds=function(a){var b=this;S(we,function(c){c.fitBounds(b,a)})};function sh(a,b){if(Ed(a))return!!a;var c=b[v],d=b[H];return 384E3>=c*d&&800>=c&&800>=d}Ff(rh[C],{bounds:j,streetView:he(Lf),center:he(Q),zoom:le,mapTypeId:me,projection:j,heading:le,tilt:le});function th(a){this[Bb](a);S(xe,Hd)}L(th,V);var uh=ke(Jd,he(ea));Ff(th[C],{position:he(Q),title:me,icon:uh,shadow:uh,shape:td,cursor:me,clickable:ne,animation:td,draggable:ne,visible:ne,flat:ne,zIndex:le});th[C].getVisible=function(){return this.get("visible")!=k};th[C].getClickable=function(){return this.get("clickable")!=k};function vh(a){th[hc](this,a)}L(vh,th);ua(vh[C],function(){this.e&&this.e.Ub[tb](this);(this.e=this.get("map"))&&this.e.Ub.X(this)});vh.MAX_ZINDEX=1E6;Ff(vh[C],{map:ke(he(Rf),he(Lf))});function wh(){S(ye,Hd)}wh[C].getMaxZoomAtLatLng=function(a,b){S(ye,function(c){c.getMaxZoomAtLatLng(a,b)})};function xh(a,b){if(Jd(a)||le(a))this.set("tableId",a),this[Bb](b);else this[Bb](a)}L(xh,V);Ea(xh[C],function(a){if(!("suppressInfoWindows"==a||"clickable"==a)){var b=this;S(ze,function(a){a.Jk(b)})}});Ff(xh[C],{map:he(Rf),tableId:le,query:ke(Jd,Fd)});function yh(){}L(yh,V);ua(yh[C],function(){var a=this;S("overlay",function(b){b.b(a)})});Ff(yh[C],{panes:ca,projection:ca,map:ke(he(Rf),he(Lf))});function zh(a){var b,c=k;if(a instanceof Jf)if(0<a.get("length")){var d=a[ac](0);d instanceof Q?(b=new Jf,b[ec](0,a)):d instanceof Jf?d[Zb]()&&!(d[ac](0)instanceof Q)?c=i:b=a:c=i}else b=a;else Pd(a)?0<a[B]?(d=a[0],d instanceof Q?(b=new Jf,b[ec](0,new Jf(a))):Pd(d)?d[B]&&!(d[0]instanceof Q)?c=i:(b=new Jf,O(a,function(a,c){b[ec](c,new Jf(a))})):c=i):b=new Jf:c=i;c&&aa(ja("Invalid value for constructor parameter 0: "+a));return b}function Ah(a){return a&&a.radius||6378137};function Bh(a){this[Bb](a);S(Be,Hd)}L(Bh,V);ua(Bh[C],va(Bh[C],function(){var a=this;S(Be,function(b){b.b(a)})}));na(Bh[C],function(){R[r](this,"bounds_changed")});Bh[C].radius_changed=Bh[C].center_changed;Da(Bh[C],function(){var a=this.get("radius"),b=this.get("center");if(b&&N(a)){var c=this.get("map"),c=c&&c.M().get("mapType");return Qg(b,a/Ah(c))}return j});Ff(Bh[C],{center:he(Q),editable:ne,map:he(Rf),radius:le,visible:ne});function Ch(){this.set("latLngs",new Jf([new Jf]))}L(Ch,V);ua(Ch[C],va(Ch[C],function(){var a=this;S(Be,function(b){b.e(a)})}));Ch[C].getPath=function(){return this.get("latLngs")[ac](0)};Ch[C].setPath=function(a){a=zh(a);this.get("latLngs")[vc](0,a[ac](0)||new Jf)};Ff(Ch[C],{editable:ne,map:he(Rf),visible:ne});function Dh(a){Ch[hc](this);this[Bb](a);S(Be,Hd)}L(Dh,Ch);Dh[C].f=i;Dh[C].getPaths=function(){return this.get("latLngs")};Dh[C].setPaths=function(a){this.set("latLngs",zh(a))};function Eh(a){Ch[hc](this);this[Bb](a);S(Be,Hd)}L(Eh,Ch);Eh[C].f=k;function Fh(a){Rg[hc](this);this[Bb](a);S(Be,Hd)}L(Fh,Rg);ua(Fh[C],va(Fh[C],function(){var a=this;S(Be,function(b){b.d(a)})}));Ff(Fh[C],{editable:ne,bounds:he(de),map:he(Rf),visible:ne});function Gh(){}Gh[C].getPanoramaByLocation=function(a,b,c){var d=this.Pa;S("streetview",function(e){e.d(a,b,c,d)})};Gh[C].getPanoramaById=function(a,b){var c=this.Pa;S("streetview",function(d){d.e(a,b,c)})};function Hh(a){this.b=a}Ia(Hh[C],function(a,b,c){c=c[vb]("div");a={fa:c,qa:a,zoom:b};c.pa=a;this.b.X(a);return c});Oa(Hh[C],function(a){this.b[tb](a.pa);a.pa=j});Hh[C].sb=function(a){R[r](a.pa,"stop",a.pa)};function Ih(a){Aa(this,a[Cb]);Ga(this,a[Kb]);this.alt=a.alt;wa(this,a[pb]);Pa(this,a[pc]);var b=new Cf,c=new Hh(b);Ia(this,P(c,c[Ob]));Oa(this,P(c,c[gc]));this.sb=P(c,c.sb);var d=P(a,a[Ib]);this.set("opacity",a[Yb]);var e=this;S(we,function(c){(new c.uk(b,d,j,a))[u]("opacity",e)})}L(Ih,V);Ih[C].Nb=i;Ff(Ih[C],{opacity:le});function Jh(a,b){var c=b||{};this.C=c.baseMapTypeId||"roadmap";this.A=a;wa(this,c[pb]);Pa(this,c[pc]||20);Ga(this,c[Kb]);this.alt=c.alt;Aa(this,new U(256,256));Ia(this,Hd)};var Kh={Animation:{BOUNCE:1,DROP:2,e:3,b:4},Circle:Bh,ControlPosition:Uc,GroundOverlay:bg,ImageMapType:Ih,InfoWindow:Uf,LatLng:Q,LatLngBounds:de,MVCArray:Jf,MVCObject:V,Map:rh,MapTypeControlStyle:{DEFAULT:0,HORIZONTAL_BAR:1,DROPDOWN_MENU:2},MapTypeId:Tc,MapTypeRegistry:Pf,Marker:vh,MarkerImage:Vf,NavigationControlStyle:{DEFAULT:0,SMALL:1,ANDROID:2,ZOOM_PAN:3,kl:4,Hk:5},OverlayView:yh,Point:T,Polygon:Dh,Polyline:Eh,Rectangle:Fh,ScaleControlStyle:{DEFAULT:0},Size:U,ZoomControlStyle:{DEFAULT:0,SMALL:1,
LARGE:2,Hk:3,ANDROID:4},event:R};
vd(Kh,{BicyclingLayer:eg,DirectionsRenderer:Wf,DirectionsService:kf,DirectionsStatus:{OK:Kc,UNKNOWN_ERROR:Nc,OVER_QUERY_LIMIT:Lc,REQUEST_DENIED:Mc,INVALID_REQUEST:Fc,ZERO_RESULTS:Oc,MAX_WAYPOINTS_EXCEEDED:Jc,NOT_FOUND:"NOT_FOUND"},DirectionsTravelMode:id,DirectionsUnitSystem:hd,DistanceMatrixService:Xf,DistanceMatrixStatus:{OK:Kc,INVALID_REQUEST:Fc,OVER_QUERY_LIMIT:Lc,REQUEST_DENIED:Mc,UNKNOWN_ERROR:Nc,MAX_ELEMENTS_EXCEEDED:Ic,MAX_DIMENSIONS_EXCEEDED:Hc},DistanceMatrixElementStatus:{OK:Kc,NOT_FOUND:"NOT_FOUND",
ZERO_RESULTS:Oc},ElevationService:Yf,ElevationStatus:{OK:Kc,UNKNOWN_ERROR:Nc,OVER_QUERY_LIMIT:Lc,REQUEST_DENIED:Mc,INVALID_REQUEST:Fc,fl:"DATA_NOT_AVAILABLE"},FusionTablesLayer:xh,Geocoder:ag,GeocoderLocationType:{ROOFTOP:"ROOFTOP",RANGE_INTERPOLATED:"RANGE_INTERPOLATED",GEOMETRIC_CENTER:"GEOMETRIC_CENTER",APPROXIMATE:"APPROXIMATE"},GeocoderStatus:{OK:Kc,UNKNOWN_ERROR:Nc,OVER_QUERY_LIMIT:Lc,REQUEST_DENIED:Mc,INVALID_REQUEST:Fc,ZERO_RESULTS:Oc,ERROR:Ec},KmlLayer:cg,KmlLayerStatus:dg,MaxZoomService:wh,
MaxZoomStatus:{OK:Kc,ERROR:Ec},StreetViewPanorama:lh,StreetViewService:Gh,StreetViewStatus:{OK:Kc,UNKNOWN_ERROR:Nc,ZERO_RESULTS:Oc},StyledMapType:Jh,TrafficLayer:fg,TravelMode:id,UnitSystem:hd});function Lh(a){this[Bb](a);S(ze,Hd)}L(Lh,V);Ea(Lh[C],function(a){if(!("map"!=a&&"token"!=a)){var b=this;S(ze,function(a){a.Mk(b)})}});Ff(Lh[C],{map:he(Rf)});function Mh(){this.b=new Cf}L(Mh,V);ua(Mh[C],function(){var a=this[ic]();this.b[yb](function(b){b[sc](a)})});Ff(Mh[C],{map:he(Rf)});function Nh(a){this.e=1729;this.b=a}function Oh(a,b,c){for(var d=ga(b[B]),e=0,f=b[B];e<f;++e)d[e]=b[mc](e);d.unshift(c);b=a.e;a=a.b;e=c=0;for(f=d[B];e<f;++e)c*=b,c+=d[e],c%=a;return c};function Ph(){var a=Gg(),b=new Nh(131071),c=unescape("%26%74%6F%6B%65%6E%3D");return function(d){var d=d[cb](Qh,"%27"),e=d+c;Rh||(Rh=/(?:https?:\/\/[^/]+)?(.*)/);d=Rh[Za](d);return e+Oh(b,d&&d[1],a)}}var Qh=la("'","g"),Rh;function Sh(){var a=new Nh(2147483647);return function(b){return Oh(a,b,0)}};cf.main=function(a){eval(a)};ff("main",{});function Th(){for(var a in ea[C])m[qc]&&m[qc].log("Warning: This site adds property <"+a+"> to Object.prototype. Extending Object.prototype breaks JavaScript for..in loops, which are used heavily in Google Maps API v3.")}
m.google.maps.Load(function(a,b){var c=m.google.maps;Th();"version"in c&&m[qc]&&m[qc].log("Warning: you have included the Google Maps API multiple times on this page. This may cause unexpected errors.");jf=new qg(a);o[kc]()<Ig()&&(ih=i);kh=new hh(b);jh(kh,"jl");Zf=Ph();$f=Sh();var d=Ng();gf(Eg(d));wd(Kh,function(a,b){c[a]=b});pa(c,Fg(d));m[Tb](function(){S("util",function(a){a.b.b()})},5E3);R[rc](m,"unload",R.wg);var e=Jg();e&&hf(function(){eval("window."+e+"()")})});var Uh=new ed;
})();

View File

@ -0,0 +1,16 @@
<!DOCTYPE HTML>
<html manifest="appcache.manifest">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Offline Map example in web browser</title>
<link type="text/css" rel="stylesheet" href="style.css" />
</head>
<body>
<div id="map"></div>
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false"></script>
<script>window.google && window.google.maps || document.write('<script src="gmapapi.js"><\/script>')</script>
<script type="text/javascript" src="webStorage.js"></script>
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript" src="map.js"></script>
</body>
</html>

View File

@ -0,0 +1,125 @@
var element = document.getElementById("map");
var mapTypeIds = [];
for(var type in google.maps.MapTypeId) {
mapTypeIds.push(google.maps.MapTypeId[type]);
}
mapTypeIds.push("OSM");
mapTypeIds.push("MyGmap");
mapTypeIds.push("LocalGmap");
mapTypeIds.push("WebStorageGmap");
mapTypeIds.push("LocalMyGmap");
mapTypeIds.push("WebStorageMyGmap");
var map = new google.maps.Map(element, {
center: new google.maps.LatLng(-22.18416881313122, -47.382545097935264),
zoom: 17,
mapTypeId: "MyGmap",
mapTypeControlOptions: {
mapTypeIds: mapTypeIds,
style: google.maps.MapTypeControlStyle.DROPDOWN_MENU
}
});
map.mapTypes.set("OSM", new google.maps.ImageMapType({
getTileUrl: getOsmTileImgSrc,
tileSize: new google.maps.Size(256, 256),
name: "OSM",
maxZoom: 20
}));
map.mapTypes.set("MyGmap", new google.maps.ImageMapType({
getTileUrl: getGmapTileImgSrc,
tileSize: new google.maps.Size(256, 256),
name: "MyGmap",
maxZoom: 20
}));
map.mapTypes.set("LocalGmap", new google.maps.ImageMapType({
getTileUrl: getLocalTileImgSrc,
tileSize: new google.maps.Size(256, 256),
name: "LocalGmap",
maxZoom: 20
}));
map.mapTypes.set("WebStorageGmap", new google.maps.ImageMapType({
getTileUrl: getWebStorageTileImgSrc,
tileSize: new google.maps.Size(256, 256),
name: "WebStorageGmap",
maxZoom: 20
}));
map.mapTypes.set("LocalMyGmap", new google.maps.ImageMapType({
getTileUrl: function(coord, zoom) {
return checkTileInSprites(coord, zoom) ?
getLocalTileImgSrc(coord, zoom) :
getGmapTileImgSrc(coord, zoom);
},
tileSize: new google.maps.Size(256, 256),
name: "LocalMyGmap",
maxZoom: 20
}));
map.mapTypes.set("WebStorageMyGmap", new google.maps.ImageMapType({
getTileUrl: function(coord, zoom) {
var image = getWebStorageTileImgSrc(coord, zoom);
return image ? image : getGmapTileImgSrc(coord, zoom);
},
tileSize: new google.maps.Size(256, 256),
name: "WebStorageMyGmap",
maxZoom: 20
}));
google.maps.event.addListener(map, 'click', function(point) {
var marker = new google.maps.Marker({
position: point.latLng,
map: map
});
google.maps.event.addListener(marker, 'dblclick', function() {
marker.setMap(null);
});
google.maps.event.addListener(marker, 'click', function() {
new google.maps.InfoWindow({
content: 'lat: ' + point.latLng.lat() + '<br>lng:' + point.latLng.lng()
}).open(map, marker);
});
});
function CustomControl(controlDiv, map, title, handler) {
controlDiv.style.padding = '5px';
var controlUI = document.createElement('DIV');
controlUI.style.backgroundColor = 'white';
controlUI.style.borderStyle = 'solid';
controlUI.style.borderWidth = '2px';
controlUI.style.cursor = 'pointer';
controlUI.style.textAlign = 'center';
controlUI.title = title;
controlDiv.appendChild(controlUI);
var controlText = document.createElement('DIV');
controlText.style.fontFamily = 'Arial,sans-serif';
controlText.style.fontSize = '12px';
controlText.style.paddingLeft = '4px';
controlText.style.paddingRight = '4px';
controlText.innerHTML = title;
controlUI.appendChild(controlText);
google.maps.event.addDomListener(controlUI, 'click', handler);
}
var clearWebStorageDiv = document.createElement('DIV');
var clearWebStorageButton = new CustomControl(clearWebStorageDiv, map,
'Clear Web Storage', clearWebStorage);
var prepareWebStorageDiv = document.createElement('DIV');
var prepareWebStorageButton = new CustomControl(prepareWebStorageDiv, map,
'Prepare Web Storage', prepareWebStorage);
clearWebStorageDiv.index = 1;
prepareWebStorageDiv.index = 1;
map.controls[google.maps.ControlPosition.TOP_RIGHT].push(clearWebStorageDiv);
map.controls[google.maps.ControlPosition.TOP_RIGHT].push(prepareWebStorageDiv);

View File

@ -0,0 +1,136 @@
var spriteRanges = {
// tl = top_left
// br = bottom_right
// {zoom: {tl: {}, br: {}}
0: {
tl: {x: 0, y: 0},
br: {x: 0, y: 0}
},
1: {
tl: {x: 1, y: 0},
br: {x: 1, y: 0}
},
2: {
tl: {x: 2, y: 1},
br: {x: 2, y: 1}
},
3: {
tl: {x: 4, y: 2},
br: {x: 4, y: 2}
},
4: {
tl: {x: 9, y: 5},
br: {x: 9, y: 5}
},
5: {
tl: {x: 18, y: 10},
br: {x: 18, y: 10}
},
6: {
tl: {x: 36, y: 20},
br: {x: 36, y: 20}
},
7: {
tl: {x: 73, y: 41},
br: {x: 73, y: 41}
},
8: {
tl: {x: 147, y: 82},
br: {x: 147, y: 82}
},
9: {
tl: {x: 294, y: 164},
br: {x: 295, y: 164}
},
10: {
tl: {x: 589, y: 328},
br: {x: 591, y: 329}
},
11: {
tl: {x: 1179, y: 657},
br: {x: 1182, y: 659}
},
12: {
tl: {x: 2358, y: 1315},
br: {x: 2364, y: 1319}
},
13: {
tl: {x: 4717, y: 2630},
br: {x: 4728, y: 2639}
},
14: {
tl: {x: 9439, y: 5262},
br: {x: 9452, y: 5277}
},
15: {
tl: {x: 18878, y: 10525},
br: {x: 18905, y: 10554}
},
16: {
tl: {x: 37757, y: 21051},
br: {x: 37810, y: 21108}
}
};
var max_zoom = 13;
var webStorage = new WebStorageFactory().getWebStorage();
function imageToBase64(image) {
var canvas = document.createElement("canvas");
canvas.width = image.width;
canvas.height = image.height;
var context = canvas.getContext("2d");
context.drawImage(image, 0, 0);
return canvas.toDataURL("image/png");
}
function loadImageToWebStorage(zoom, x, y){
var url = "cache/" + zoom + "/" + x + "_" + y + ".png";
var image = new Image();
image.onload = function() {
webStorage.setItem([zoom, x, y].join('_'), imageToBase64(image));
};
image.src = url;
}
function clearWebStorage() {
webStorage.clear();
}
function prepareWebStorage() {
for (var zoom in spriteRanges) {
if (zoom > max_zoom) {
break;
}
var sprites = spriteRanges[zoom];
for (var x=sprites.tl.x; x<=sprites.br.x; x++) {
for (var y=sprites.tl.y; y<=sprites.br.y; y++) {
loadImageToWebStorage(zoom, x, y);
}
}
}
}
function checkTileInSprites(coord, zoom) {
var sprites = spriteRanges[zoom];
return sprites.tl.x <= coord.x && coord.x <= sprites.br.x && sprites.tl.y <= coord.y && coord.y <= sprites.br.y;
}
function getOsmTileImgSrc(coord, zoom) {
return "http://tile.openstreetmap.org/" + zoom + "/" + coord.x + "/" + coord.y + ".png";
}
function getGmapTileImgSrc(coord, zoom) {
return "http://mt0.googleapis.com/vt?src=apiv3&x=" + coord.x + "&y=" + coord.y + "&z=" + zoom;
}
function getLocalTileImgSrc(coord, zoom) {
return "cache/" + zoom + "/" + coord.x + "_" + coord.y + ".png";
}
function getWebStorageTileImgSrc(coord, zoom) {
return webStorage.getItem([zoom, coord.x, coord.y].join('_'));
}

View File

@ -0,0 +1,8 @@
html, body, #map {
height: 100%;
width: 100%;
}
.gmnoprint {
width: auto !important;
}

View File

@ -0,0 +1,29 @@
function LocalStorageWebStorageImpl() {
this.webStorageType = 'localStorage';
this.getItem = function(name) {
return localStorage.getItem(name);
};
this.setItem = function(name, value) {
localStorage.setItem(name, value);
};
this.clear = function() {
localStorage.clear();
};
}
function WebStorageFactory() {
var webStorage = null;
if (window.localStorage) {
webStorage = new LocalStorageWebStorageImpl();
} else {
alert("Your browser don't support localStorage");
}
this.getWebStorage = function() {
return webStorage;
}
}

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -1,60 +1,60 @@
[
{
"timestamp": 1707485821.8047965,
"timestamp": 1708432207.1039248,
"x_max": 640.0,
"y_max": 480.0,
"objetos": []
},
{
"timestamp": 1707485821.990315,
"timestamp": 1708432207.3070076,
"x_max": 640.0,
"y_max": 480.0,
"objetos": []
},
{
"timestamp": 1707485822.172832,
"timestamp": 1708432207.497069,
"x_max": 640.0,
"y_max": 480.0,
"objetos": []
},
{
"timestamp": 1707485822.358352,
"timestamp": 1708432207.6906283,
"x_max": 640.0,
"y_max": 480.0,
"objetos": []
},
{
"timestamp": 1707485822.5488734,
"timestamp": 1708432207.8836892,
"x_max": 640.0,
"y_max": 480.0,
"objetos": []
},
{
"timestamp": 1707485822.7363853,
"timestamp": 1708432208.0787556,
"x_max": 640.0,
"y_max": 480.0,
"objetos": []
},
{
"timestamp": 1707485822.9339037,
"timestamp": 1708432208.2768304,
"x_max": 640.0,
"y_max": 480.0,
"objetos": []
},
{
"timestamp": 1707485823.1304202,
"timestamp": 1708432208.4708998,
"x_max": 640.0,
"y_max": 480.0,
"objetos": []
},
{
"timestamp": 1707485823.3329365,
"timestamp": 1708432208.6789746,
"x_max": 640.0,
"y_max": 480.0,
"objetos": []
},
{
"timestamp": 1707485823.5494504,
"timestamp": 1708432208.8730547,
"x_max": 640.0,
"y_max": 480.0,
"objetos": []

View File

@ -0,0 +1,38 @@
CACHE MANIFEST
NETWORK:
*
CACHE:
index.html
style.css
script.js
gmapapi.js
gmapcache/main.js
gmapcache/components.js
gmapcache/empty.js
gmapcache/gstatic/arrow-down.png
gmapcache/gstatic/cb/mod_cb_scout/cb_scout_sprite_api_003.png
gmapcache/gstatic/cb/target_locking.gif
gmapcache/gstatic/google_white.png
gmapcache/gstatic/iw3.png
gmapcache/gstatic/iws3.png
gmapcache/gstatic/mapcontrols3d7.png
gmapcache/gstatic/markers2/marker_sprite.png
gmapcache/gstatic/mv/imgs8.png
gmapcache/gstatic/rotate2.png
gmapcache/gstatic/szc4.png
gmapcache/gstatic/transparent.png
gmapcache/gstatic/openhand_8_8.cur
gmapcache/gstatic/closedhand_8_8.cur
FALLBACK:
gmapcache/googleapis/maps/api/js/AuthenticationService.Authenticate gmapcache/empty.js
gmapcache/googleapis/maps/api/js/QuotaService.RecordEvent gmapcache/empty.js
gmapcache/googleapis/maps/api/js/StaticMapService.GetMapImage gmapcache/empty.js
gmapcache/googleapis/maps/api/js/ViewportInfoService.GetViewportInfo gmapcache/empty.js
gmapcache/googleapis/maps/gen_204 gmapcache/empty.js
gmapcache/googleapis/mapslt/ft gmapcache/empty.js

View File

@ -0,0 +1,224 @@
window.google = window.google || {};
google.maps = google.maps || {};
(function () {
function getScript(src) {
document.write('<' + 'script src="' + src + '"' + ' type="text/javascript"><' + '/script>');
}
var modules = google.maps.modules = {};
google.maps.__gjsload__ = function (name, text) {
modules[name] = text;
};
google.maps.Load = function (apiLoad) {
delete google.maps.Load;
apiLoad([null, [
[
["http://mt0.googleapis.com/vt?lyrs=m@174000000\u0026src=api\u0026hl=en-US\u0026"],
null,
null,
null,
null,
"m@174000000"
],
[
["http://khm0.googleapis.com/kh?v=107\u0026hl=en-US\u0026"],
null,
null,
null,
1,
"107"
],
[
["http://mt0.googleapis.com/vt?lyrs=h@174000000\u0026src=api\u0026hl=en-US\u0026"],
null,
null,
"imgtp=png32\u0026",
null,
"h@174000000"
],
[
["http://mt0.googleapis.com/vt?lyrs=t@128,r@174000000\u0026src=api\u0026hl=en-US\u0026"],
null,
null,
null,
null,
"t@128,r@174000000"
],
null,
[
[null, 0, 7, 7, [
[
[330000000, 1246050000],
[386200000, 1293600000]
],
[
[366500000, 1297000000],
[386200000, 1320034790]
]
], ["http://mt0.gmaptiles.co.kr/mt?v=kr1.15\u0026hl=en-US\u0026"]],
[null, 0, 8, 8, [
[
[330000000, 1246050000],
[386200000, 1279600000]
],
[
[345000000, 1279600000],
[386200000, 1286700000]
],
[
[354690000, 1286700000],
[386200000, 1320035000]
]
], ["http://mt0.gmaptiles.co.kr/mt?v=kr1.15\u0026hl=en-US\u0026"]],
[null, 0, 9, 9, [
[
[330000000, 1246050000],
[386200000, 1279600000]
],
[
[340000000, 1279600000],
[386200000, 1286700000]
],
[
[348900000, 1286700000],
[386200000, 1302000000]
],
[
[368300000, 1302000000],
[386200000, 1320035000]
]
], ["http://mt0.gmaptiles.co.kr/mt?v=kr1.15\u0026hl=en-US\u0026"]],
[null, 0, 10, 19, [
[
[329890840, 1246055600],
[386930130, 1284960940]
],
[
[344646740, 1284960940],
[386930130, 1288476560]
],
[
[350277470, 1288476560],
[386930130, 1310531620]
],
[
[370277730, 1310531620],
[386930130, 1320034790]
]
], ["http://mt0.gmaptiles.co.kr/mt?v=kr1.15\u0026hl=en-US\u0026"]],
[null, 3, 7, 7, [
[
[330000000, 1246050000],
[386200000, 1293600000]
],
[
[366500000, 1297000000],
[386200000, 1320034790]
]
], ["http://mt0.gmaptiles.co.kr/mt?v=kr1p.12\u0026hl=en-US\u0026"]],
[null, 3, 8, 8, [
[
[330000000, 1246050000],
[386200000, 1279600000]
],
[
[345000000, 1279600000],
[386200000, 1286700000]
],
[
[354690000, 1286700000],
[386200000, 1320035000]
]
], ["http://mt0.gmaptiles.co.kr/mt?v=kr1p.12\u0026hl=en-US\u0026"]],
[null, 3, 9, 9, [
[
[330000000, 1246050000],
[386200000, 1279600000]
],
[
[340000000, 1279600000],
[386200000, 1286700000]
],
[
[348900000, 1286700000],
[386200000, 1302000000]
],
[
[368300000, 1302000000],
[386200000, 1320035000]
]
], ["http://mt0.gmaptiles.co.kr/mt?v=kr1p.12\u0026hl=en-US\u0026"]],
[null, 3, 10, null, [
[
[329890840, 1246055600],
[386930130, 1284960940]
],
[
[344646740, 1284960940],
[386930130, 1288476560]
],
[
[350277470, 1288476560],
[386930130, 1310531620]
],
[
[370277730, 1310531620],
[386930130, 1320034790]
]
], ["http://mt0.gmaptiles.co.kr/mt?v=kr1p.12\u0026hl=en-US\u0026"]]
],
[
["http://cbk0.googleapis.com/cbk?"]
],
[
["http://khmdb0.googleapis.com/kh?v=53\u0026hl=en-US\u0026"],
null,
null,
null,
null,
"53"
],
[
[
"http://mt0.googleapis.com/mapslt?hl=en-US\u0026"
]
],
[
[
"gmapcache/googleapis/mapslt/ft?hl=en-US\u0026"
]
],
[
[
"http://mt0.googleapis.com/vt?hl=en-US\u0026"
]
]
], [
"en-US",
"US",
null,
0,
null,
null,
"gmapcache/gstatic/",
"http://csi.gstatic.com",
"https://maps.googleapis.com",
"gmapcache/googleapis"
], [
"http://maps.gstatic.com/intl/en_us/mapfiles/api-3/8/5",
"3.8.5"
], [275480768],
1.0, null, null, null, null, 0, "", null, null, 0,
"http://khm.googleapis.com/mz?v=107\u0026",
null,
"https://earthbuilder.google.com",
"https://earthbuilder.googleapis.com"
], loadScriptTime);
};
var loadScriptTime = (new Date).getTime();
getScript("gmapcache/main.js");
getScript("gmapcache/components.js");
})();

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,21 @@
window.google = window.google || {};
google.maps = google.maps || {};
(function() {
function getScript(src) {
document.write('<' + 'script src="' + src + '"' +
' type="text/javascript"><' + '/script>');
}
var modules = google.maps.modules = {};
google.maps.__gjsload__ = function(name, text) {
modules[name] = text;
};
google.maps.Load = function(apiLoad) {
delete google.maps.Load;
apiLoad([null,[[["http://mt0.googleapis.com/vt?lyrs=m@174000000\u0026src=api\u0026hl=en-US\u0026","http://mt1.googleapis.com/vt?lyrs=m@174000000\u0026src=api\u0026hl=en-US\u0026"],null,null,null,null,"m@174000000"],[["http://khm0.googleapis.com/kh?v=107\u0026hl=en-US\u0026","http://khm1.googleapis.com/kh?v=107\u0026hl=en-US\u0026"],null,null,null,1,"107"],[["http://mt0.googleapis.com/vt?lyrs=h@174000000\u0026src=api\u0026hl=en-US\u0026","http://mt1.googleapis.com/vt?lyrs=h@174000000\u0026src=api\u0026hl=en-US\u0026"],null,null,"imgtp=png32\u0026",null,"h@174000000"],[["http://mt0.googleapis.com/vt?lyrs=t@128,r@174000000\u0026src=api\u0026hl=en-US\u0026","http://mt1.googleapis.com/vt?lyrs=t@128,r@174000000\u0026src=api\u0026hl=en-US\u0026"],null,null,null,null,"t@128,r@174000000"],null,[[null,0,7,7,[[[330000000,1246050000],[386200000,1293600000]],[[366500000,1297000000],[386200000,1320034790]]],["http://mt0.gmaptiles.co.kr/mt?v=kr1.15\u0026hl=en-US\u0026","http://mt1.gmaptiles.co.kr/mt?v=kr1.15\u0026hl=en-US\u0026"]],[null,0,8,8,[[[330000000,1246050000],[386200000,1279600000]],[[345000000,1279600000],[386200000,1286700000]],[[354690000,1286700000],[386200000,1320035000]]],["http://mt0.gmaptiles.co.kr/mt?v=kr1.15\u0026hl=en-US\u0026","http://mt1.gmaptiles.co.kr/mt?v=kr1.15\u0026hl=en-US\u0026"]],[null,0,9,9,[[[330000000,1246050000],[386200000,1279600000]],[[340000000,1279600000],[386200000,1286700000]],[[348900000,1286700000],[386200000,1302000000]],[[368300000,1302000000],[386200000,1320035000]]],["http://mt0.gmaptiles.co.kr/mt?v=kr1.15\u0026hl=en-US\u0026","http://mt1.gmaptiles.co.kr/mt?v=kr1.15\u0026hl=en-US\u0026"]],[null,0,10,19,[[[329890840,1246055600],[386930130,1284960940]],[[344646740,1284960940],[386930130,1288476560]],[[350277470,1288476560],[386930130,1310531620]],[[370277730,1310531620],[386930130,1320034790]]],["http://mt0.gmaptiles.co.kr/mt?v=kr1.15\u0026hl=en-US\u0026","http://mt1.gmaptiles.co.kr/mt?v=kr1.15\u0026hl=en-US\u0026"]],[null,3,7,7,[[[330000000,1246050000],[386200000,1293600000]],[[366500000,1297000000],[386200000,1320034790]]],["http://mt0.gmaptiles.co.kr/mt?v=kr1p.12\u0026hl=en-US\u0026","http://mt1.gmaptiles.co.kr/mt?v=kr1p.12\u0026hl=en-US\u0026"]],[null,3,8,8,[[[330000000,1246050000],[386200000,1279600000]],[[345000000,1279600000],[386200000,1286700000]],[[354690000,1286700000],[386200000,1320035000]]],["http://mt0.gmaptiles.co.kr/mt?v=kr1p.12\u0026hl=en-US\u0026","http://mt1.gmaptiles.co.kr/mt?v=kr1p.12\u0026hl=en-US\u0026"]],[null,3,9,9,[[[330000000,1246050000],[386200000,1279600000]],[[340000000,1279600000],[386200000,1286700000]],[[348900000,1286700000],[386200000,1302000000]],[[368300000,1302000000],[386200000,1320035000]]],["http://mt0.gmaptiles.co.kr/mt?v=kr1p.12\u0026hl=en-US\u0026","http://mt1.gmaptiles.co.kr/mt?v=kr1p.12\u0026hl=en-US\u0026"]],[null,3,10,null,[[[329890840,1246055600],[386930130,1284960940]],[[344646740,1284960940],[386930130,1288476560]],[[350277470,1288476560],[386930130,1310531620]],[[370277730,1310531620],[386930130,1320034790]]],["http://mt0.gmaptiles.co.kr/mt?v=kr1p.12\u0026hl=en-US\u0026","http://mt1.gmaptiles.co.kr/mt?v=kr1p.12\u0026hl=en-US\u0026"]]],[["http://cbk0.googleapis.com/cbk?","http://cbk1.googleapis.com/cbk?"]],[["http://khmdb0.googleapis.com/kh?v=53\u0026hl=en-US\u0026","http://khmdb1.googleapis.com/kh?v=53\u0026hl=en-US\u0026"],null,null,null,null,"53"],[["http://mt0.googleapis.com/mapslt?hl=en-US\u0026","http://mt1.googleapis.com/mapslt?hl=en-US\u0026"]],[["http://mt0.googleapis.com/mapslt/ft?hl=en-US\u0026","http://mt1.googleapis.com/mapslt/ft?hl=en-US\u0026"]],[["http://mt0.googleapis.com/vt?hl=en-US\u0026","http://mt1.googleapis.com/vt?hl=en-US\u0026"]]],["en-US","US",null,0,null,null,"http://maps.gstatic.com/mapfiles/","http://csi.gstatic.com","https://maps.googleapis.com","http://maps.googleapis.com"],["http://maps.gstatic.com/intl/en_us/mapfiles/api-3/8/5","3.8.5"],[275480768],1.0,null,null,null,null,0,"",null,null,0,"http://khm.googleapis.com/mz?v=107\u0026",null,"https://earthbuilder.google.com","https://earthbuilder.googleapis.com"], loadScriptTime);
};
var loadScriptTime = (new Date).getTime();
getScript("http://maps.gstatic.com/intl/en_us/mapfiles/api-3/8/5/main.js");
})();

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 326 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 326 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 620 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 574 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 B

View File

@ -0,0 +1,44 @@
(function(){function aa(a){throw a;}var ca=void 0,i=!0,j=null,k=!1,da=encodeURIComponent,m=window,ea=Object,fa=Infinity,n=document,o=Math,ga=Array,ha=screen,ia=navigator,ja=Error,ka=String,la=RegExp;function ma(a,b){return a.onload=b}function na(a,b){return a.center_changed=b}function oa(a,b){return a.isEmpty=b}function pa(a,b){return a.version=b}function ra(a,b){return a.width=b}function sa(a,b){return a.extend=b}function ta(a,b){return a.onerror=b}function ua(a,b){return a.map_changed=b}
function va(a,b){return a.visible_changed=b}function wa(a,b){return a.minZoom=b}function xa(a,b){return a.remove=b}function ya(a,b){return a.equals=b}function za(a,b){return a.setZoom=b}function Aa(a,b){return a.tileSize=b}function Ca(a,b){return a.getDetails=b}function Da(a,b){return a.getBounds=b}function Ea(a,b){return a.changed=b}function Fa(a,b){return a.clear=b}function Ga(a,b){return a.name=b}function Ha(a,b){return a.overflow=b}function Ia(a,b){return a.getTile=b}
function Ja(a,b){return a.toString=b}function Ka(a,b){return a.length=b}function La(a,b){return a.getZoom=b}function Ma(a,b){return a.size=b}function Na(a,b){return a.search=b}function Oa(a,b){return a.releaseTile=b}function Pa(a,b){return a.maxZoom=b}function Qa(a,b){return a.getUrl=b}function Ra(a,b){return a.contains=b}function Sa(a,b){return a.height=b}function Ta(a,b){return a.zoom=b}
var Ua="appendChild",p="push",Va="isEmpty",Xa="deviceXDPI",r="trigger",u="bindTo",Ya="shift",Za="exec",$a="clearTimeout",ab="fromLatLngToPoint",v="width",w="round",bb="slice",cb="replace",db="nodeType",eb="ceil",fb="floor",gb="getVisible",hb="offsetWidth",ib="concat",jb="removeListener",kb="extend",lb="charAt",mb="unbind",nb="preventDefault",ob="getNorthEast",pb="minZoom",rb="indexOf",sb="fromCharCode",tb="remove",ub="equals",vb="createElement",wb="atan2",xb="firstChild",yb="forEach",zb="setZoom",
Ab="sqrt",x="setAttribute",Bb="setValues",Cb="tileSize",Eb="toUrlValue",Fb="addListenerOnce",Gb="removeAt",Hb="changed",y="type",Ib="getTileUrl",Jb="clearInstanceListeners",A="bind",Kb="name",Lb="getTime",Mb="getElementsByTagName",Nb="substr",Ob="getTile",Pb="notify",Qb="toString",Rb="setVisible",B="length",Sb="onRemove",C="prototype",Tb="setTimeout",Vb="intersects",Wb="document",Xb="split",Yb="opacity",E="forward",Zb="getLength",$b="getSouthWest",ac="getAt",bc="message",cc="hasOwnProperty",F="style",
G="addListener",dc="removeChild",ec="insertAt",fc="target",gc="releaseTile",hc="call",ic="getMap",jc="atan",kc="random",lc="returnValue",mc="charCodeAt",nc="getArray",oc="href",pc="maxZoom",qc="console",rc="addDomListener",sc="setMap",tc="contains",uc="apply",vc="setAt",wc="tagName",xc="parentNode",yc="asin",zc="label",H="height",Ac="splice",Bc="offsetHeight",Cc="join",Dc="toLowerCase",Ec="ERROR",Fc="INVALID_REQUEST",Hc="MAX_DIMENSIONS_EXCEEDED",Ic="MAX_ELEMENTS_EXCEEDED",Jc="MAX_WAYPOINTS_EXCEEDED",
Kc="OK",Lc="OVER_QUERY_LIMIT",Mc="REQUEST_DENIED",Nc="UNKNOWN_ERROR",Oc="ZERO_RESULTS";function Pc(){return function(){}}function Qc(a){return function(){return this[a]}}var I,Rc=[];function Sc(a){return function(){return Rc[a][uc](this,arguments)}}var Tc={ROADMAP:"roadmap",SATELLITE:"satellite",HYBRID:"hybrid",TERRAIN:"terrain"};var Uc={TOP_LEFT:1,TOP_CENTER:2,TOP:2,TOP_RIGHT:3,LEFT_CENTER:4,LEFT_TOP:5,LEFT:5,LEFT_BOTTOM:6,RIGHT_TOP:7,RIGHT:7,RIGHT_CENTER:8,RIGHT_BOTTOM:9,BOTTOM_LEFT:10,BOTTOM_CENTER:11,BOTTOM:11,BOTTOM_RIGHT:12};var Vc=this;o[fb](2147483648*o[kc]())[Qb](36);function Wc(a){var b=a;if(a instanceof ga)b=[],Xc(b,a);else if(a instanceof ea){var c=b={},d;for(d in c)c[cc](d)&&delete c[d];for(var e in a)a[cc](e)&&(c[e]=Wc(a[e]))}return b}function Xc(a,b){Ka(a,b[B]);for(var c=0;c<b[B];++c)a[c]=Wc(b[c])}function Yc(a,b){a[b]||(a[b]=[]);return a[b]}function Zc(a,b){return a[b]?a[b][B]:0};var $c=la("'","g");function ad(a,b){var c=[];bd(a,b,c);return c[Cc]("&")[cb]($c,"%27")}function bd(a,b,c){for(var d=1;d<b.Y[B];++d){var e=b.Y[d],f=a[d+b.$];if(f!=j)if(3==e[zc])for(var g=0;g<f[B];++g)cd(f[g],d,e,c);else cd(f,d,e,c)}}function cd(a,b,c,d){if("m"==c[y]){var e=d[B];bd(a,c.V,d);d[Ac](e,0,[b,"m",d[B]-e][Cc](""))}else"b"==c[y]&&(a=a?"1":"0"),d[p]([b,c[y],da(a)][Cc](""))};function dd(a){this.l=a||[]}function ed(a){this.l=a||[]}var fd=new dd,gd=new dd;var hd={METRIC:0,IMPERIAL:1},id={DRIVING:"DRIVING",WALKING:"WALKING",BICYCLING:"BICYCLING"};var jd=o.abs,kd=o[eb],ld=o[fb],md=o.max,nd=o.min,od=o[w],pd="number",qd="object",rd="string",sd="undefined";function J(a){return a?a[B]:0}function td(){return i}function ud(a,b){for(var c=0,d=J(a);c<d;++c)if(a[c]===b)return i;return k}function vd(a,b){wd(b,function(c){a[c]=b[c]})}function xd(a){for(var b in a)return k;return i}function L(a,b){function c(){}c.prototype=b[C];a.prototype=new c}function yd(a,b,c){b!=j&&(a=o.max(a,b));c!=j&&(a=o.min(a,c));return a}
function zd(a,b,c){return((a-b)%(c-b)+(c-b))%(c-b)+b}function Ad(a,b){return 1.0E-9>=o.abs(a-b)}function M(a){return a*(o.PI/180)}function Bd(a){return a/(o.PI/180)}function Cd(a,b){for(var c=Dd(ca,J(b)),d=Dd(ca,0);d<c;++d)a[p](b[d])}function Ed(a){return typeof a!=sd}function N(a){return typeof a==pd}function Fd(a){return typeof a==qd}function Hd(){}function Dd(a,b){return a==j?b:a}function Id(a){a[cc]("_instance")||(a._instance=new a);return a._instance}function Jd(a){return typeof a==rd}
function O(a,b){if(a)for(var c=0,d=J(a);c<d;++c)b(a[c],c)}function wd(a,b){for(var c in a)b(c,a[c])}function P(a,b,c){if(2<arguments[B]){var d=Kd(arguments,2);return function(){return b[uc](a||this,0<arguments[B]?d[ib](Ld(arguments)):d)}}return function(){return b[uc](a||this,arguments)}}function Md(a,b,c){var d=Kd(arguments,2);return function(){return b[uc](a,d)}}function Kd(a,b,c){return Function[C][hc][uc](ga[C][bb],arguments)}function Ld(a){return ga[C][bb][hc](a,0)}
function Nd(){return(new Date)[Lb]()}function Od(a,b){if(a)return function(){--a||b()};b();return Hd}function Pd(a){return a!=j&&typeof a==qd&&typeof a[B]==pd}function Qd(a){var b="";O(arguments,function(a){J(a)&&"/"==a[0]?b=a:(b&&"/"!=b[J(b)-1]&&(b+="/"),b+=a)});return b}function Rd(a){a=a||m.event;Sd(a);Td(a);return k}function Sd(a){a.cancelBubble=i;a.stopPropagation&&a.stopPropagation()}function Td(a){a.returnValue=k;a[nb]&&a[nb]()}
function Ud(a){a.returnValue=a[lc]?"true":"";typeof a[lc]!=rd?a.handled=i:a.returnValue="true"}function Vd(a){return function(){var b=this,c=arguments;Wd(function(){a[uc](b,c)})}}function Wd(a){return m[Tb](a,0)}function Xd(a,b){var c=a[Mb]("head")[0],d=a[vb]("script");d[x]("type","text/javascript");d[x]("charset","UTF-8");d[x]("src",b);c[Ua](d)};function Q(a,b,c){a-=0;b-=0;c||(a=yd(a,-90,90),b=zd(b,-180,180));this.Ta=a;this.Ua=b}I=Q[C];Ja(I,function(){return"("+this.lat()+", "+this.lng()+")"});ya(I,function(a){return!a?k:Ad(this.lat(),a.lat())&&Ad(this.lng(),a.lng())});I.lat=Qc("Ta");I.lng=Qc("Ua");function Yd(a,b){var c=o.pow(10,b);return o[w](a*c)/c}I.toUrlValue=function(a){a=Ed(a)?a:6;return Yd(this.lat(),a)+","+Yd(this.lng(),a)};function Zd(a,b){-180==a&&180!=b&&(a=180);-180==b&&180!=a&&(b=180);this.b=a;this.e=b}function $d(a){return a.b>a.e}I=Zd[C];oa(I,function(){return 360==this.b-this.e});I.intersects=function(a){var b=this.b,c=this.e;return this[Va]()||a[Va]()?k:$d(this)?$d(a)||a.b<=this.e||a.e>=b:$d(a)?a.b<=c||a.e>=b:a.b<=c&&a.e>=b};Ra(I,function(a){-180==a&&(a=180);var b=this.b,c=this.e;return $d(this)?(a>=b||a<=c)&&!this[Va]():a>=b&&a<=c});
sa(I,function(a){this[tc](a)||(this[Va]()?this.b=this.e=a:ae(a,this.b)<ae(this.e,a)?this.b=a:this.e=a)});ya(I,function(a){return 1.0E-9>=o.abs(a.b-this.b)%360+o.abs(be(a)-be(this))});function ae(a,b){var c=b-a;return 0<=c?c:b+180-(a-180)}function be(a){return a[Va]()?0:$d(a)?360-(a.b-a.e):a.e-a.b}I.ob=function(){var a=(this.b+this.e)/2;$d(this)&&(a=zd(a+180,-180,180));return a};function ce(a,b){this.b=a;this.e=b}I=ce[C];oa(I,function(){return this.b>this.e});
I.intersects=function(a){var b=this.b,c=this.e;return b<=a.b?a.b<=c&&a.b<=a.e:b<=a.e&&b<=c};Ra(I,function(a){return a>=this.b&&a<=this.e});sa(I,function(a){this[Va]()?this.e=this.b=a:a<this.b?this.b=a:a>this.e&&(this.e=a)});ya(I,function(a){return this[Va]()?a[Va]():1.0E-9>=o.abs(a.b-this.b)+o.abs(this.e-a.e)});I.ob=function(){return(this.e+this.b)/2};function de(a,b){a&&!b&&(b=a);if(a){var c=yd(a.lat(),-90,90),d=yd(b.lat(),-90,90);this.aa=new ce(c,d);c=a.lng();d=b.lng();360<=d-c?this.ba=new Zd(-180,180):(c=zd(c,-180,180),d=zd(d,-180,180),this.ba=new Zd(c,d))}else this.aa=new ce(1,-1),this.ba=new Zd(180,-180)}I=de[C];I.getCenter=function(){return new Q(this.aa.ob(),this.ba.ob())};Ja(I,function(){return"("+this[$b]()+", "+this[ob]()+")"});I.toUrlValue=function(a){var b=this[$b](),c=this[ob]();return[b[Eb](a),c[Eb](a)][Cc]()};
ya(I,function(a){return!a?k:this.aa[ub](a.aa)&&this.ba[ub](a.ba)});Ra(I,function(a){return this.aa[tc](a.lat())&&this.ba[tc](a.lng())});I.intersects=function(a){return this.aa[Vb](a.aa)&&this.ba[Vb](a.ba)};I.Va=Sc(4);sa(I,function(a){this.aa[kb](a.lat());this.ba[kb](a.lng());return this});I.union=function(a){this[kb](a[$b]());this[kb](a[ob]());return this};I.getSouthWest=function(){return new Q(this.aa.b,this.ba.b,i)};I.getNorthEast=function(){return new Q(this.aa.e,this.ba.e,i)};
I.toSpan=function(){return new Q(this.aa[Va]()?0:this.aa.e-this.aa.b,be(this.ba),i)};oa(I,function(){return this.aa[Va]()||this.ba[Va]()});function ee(a,b){return function(c){if(!b)for(var d in c)a[d]||aa(ja("Unknown property <"+(d+">")));var e;for(d in a)try{var f=c[d];if(!a[d](f)){e="Invalid value for property <"+(d+(">: "+f));break}}catch(g){e="Error in property <"+(d+(">: ("+(g[bc]+")")));break}e&&aa(ja(e));return i}}function fe(a){return a==j}function ge(a){try{return!!a.cloneNode}catch(b){return k}}function he(a,b){var c=Ed(b)?b:i;return function(b){return b==j&&c||b instanceof a}}
function ie(a){return function(b){for(var c in a)if(a[c]==b)return i;return k}}function je(a){return function(b){Pd(b)||aa(ja("Value is not an array"));var c;O(b,function(b,e){try{a(b)||(c="Invalid value at position "+(e+(": "+b)))}catch(f){c="Error in element at position "+(e+(": ("+(f[bc]+")")))}});c&&aa(ja(c));return i}}
function ke(a){var b=arguments,c=b[B];return function(){for(var a=[],e=0;e<c;++e)try{if(b[e][uc](this,arguments))return i}catch(f){a[p](f[bc])}J(a)&&aa(ja("Invalid value: "+(arguments[0]+(" ("+(a[Cc](" | ")+")")))));return k}}var le=ke(N,fe),me=ke(Jd,fe),ne=ke(function(a){return a===!!a},fe),oe=ke(he(Q,k),Jd),pe=je(oe);var qe=ee({routes:je(ee({},i))},i);var re="geometry",se="drawing_impl",te="geocoder",ue="infowindow",ve="layers",we="map",xe="marker",ye="maxzoom",ze="onion",Ae="places_impl",Be="poly",Ce="search_impl",De="stats",Ee="usage";var Fe={main:[],common:["main"],util:["common"],adsense:["main"],adsense_impl:["util"],controls:["util"]};Fe.directions=["util",re];Fe.distance_matrix=["util"];Fe.drawing=["main"];Fe[se]=["controls"];Fe.visualization=["main"];Fe.visualization_impl=["util"];Fe.earthbuilder_impl=[ze];Fe.elevation=["util",re];Fe.buzz=["main"];Fe[te]=["util"];Fe[re]=["main"];Fe[ue]=["util"];Fe.kml=[ze,"util",we];Fe[ve]=[we];Fe[we]=["common"];Fe[xe]=["util"];Fe[ye]=["util"];Fe[ze]=["util",we];Fe.overlay=["common"];
Fe.panoramio=["main"];Fe.places=["main"];Fe[Ae]=["controls"];Fe[Be]=["util",we];Na(Fe,["main"]);Fe[Ce]=[ze];Fe[De]=["util"];Fe.streetview=["util",re];Fe[Ee]=["util"];Fe.weather=["main"];Fe.weather_impl=[ze];function Ge(a,b){this.e=a;this.n={};this.d=[];this.b=j;this.f=(this.j=!!b.match(/^https?:\/\/[^:\/]*\/intl/))?b[cb]("/intl","/cat_js/intl"):b}function He(a,b){a.n[b]||(a.j?(a.d[p](b),a.b||(a.b=m[Tb](P(a,a.A),0))):Xd(a.e,Qd(a.f,b)+".js"))}Ge[C].A=function(){var a=Qd(this.f,"%7B"+this.d[Cc](",")+"%7D.js");Ka(this.d,0);m[$a](this.b);this.b=j;Xd(this.e,a)};var Ie="click",Je="contextmenu",Ke="forceredraw",Le="staticmaploaded",Me="panby",Ne="panto",Oe="insert",Pe="remove";var R={};R.df=function(){return this}().navigator&&-1!=ia.userAgent[Dc]()[rb]("msie");R.Vc={};R.addListener=function(a,b,c){return new Qe(a,b,c,0)};R.qe=function(a,b){var c=a.__e3_,c=c&&c[b];return!!c&&!xd(c)};R.removeListener=function(a){a[tb]()};R.clearListeners=function(a,b){wd(Re(a,b),function(a,b){b&&b[tb]()})};R.clearInstanceListeners=function(a){wd(Re(a),function(a,c){c&&c[tb]()})};function Se(a,b){a.__e3_||(a.__e3_={});var c=a.__e3_;c[b]||(c[b]={});return c[b]}
function Re(a,b){var c,d=a.__e3_||{};if(b)c=d[b]||{};else{c={};for(var e in d)vd(c,d[e])}return c}R.trigger=function(a,b,c){if(R.qe(a,b)){var d=Kd(arguments,2),e=Re(a,b),f;for(f in e){var g=e[f];g&&g.d[uc](g.b,d)}}};R.addDomListener=function(a,b,c,d){if(a.addEventListener){var e=d?4:1;a.addEventListener(b,c,d);c=new Qe(a,b,c,e)}else a.attachEvent?(c=new Qe(a,b,c,2),a.attachEvent("on"+b,Te(c))):(a["on"+b]=c,c=new Qe(a,b,c,3));return c};
R.addDomListenerOnce=function(a,b,c,d){var e=R[rc](a,b,function(){e[tb]();return c[uc](this,arguments)},d);return e};R.R=function(a,b,c,d){c=Ue(c,d);return R[rc](a,b,c)};function Ue(a,b){return function(c){return b[hc](a,c,this)}}R.bind=function(a,b,c,d){return R[G](a,b,P(c,d))};R.addListenerOnce=function(a,b,c){var d=R[G](a,b,function(){d[tb]();return c[uc](this,arguments)});return d};R.forward=function(a,b,c){return R[G](a,b,Ve(b,c))};R.va=function(a,b,c,d){return R[rc](a,b,Ve(b,c,!d))};
R.wg=function(){var a=R.Vc,b;for(b in a)a[b][tb]();R.Vc={};(a=Vc.CollectGarbage)&&a()};function Ve(a,b,c){return function(d){var e=[b,a];Cd(e,arguments);R[r][uc](this,e);c&&Ud[uc](j,arguments)}}function Qe(a,b,c,d){this.b=a;this.e=b;this.d=c;this.f=j;this.j=d;this.id=++We;Se(a,b)[this.id]=this;R.df&&"tagName"in a&&(R.Vc[this.id]=this)}var We=0;
function Te(a){return a.f=function(b){b||(b=m.event);if(b&&!b[fc])try{b.target=b.srcElement}catch(c){}var d=a.d[uc](a.b,[b]);return b&&Ie==b[y]&&(b=b.srcElement)&&"A"==b[wc]&&"javascript:void(0)"==b[oc]?k:d}}
xa(Qe[C],function(){if(this.b){switch(this.j){case 1:this.b.removeEventListener(this.e,this.d,k);break;case 4:this.b.removeEventListener(this.e,this.d,i);break;case 2:this.b.detachEvent("on"+this.e,this.f);break;case 3:this.b["on"+this.e]=j}delete Se(this.b,this.e)[this.id];this.f=this.d=this.b=j;delete R.Vc[this.id]}});function Xe(a,b){this.e=a;this.b=b;this.d=Ye(b)}function Ye(a){var b={};wd(a,function(a,d){O(d,function(d){b[d]||(b[d]=[]);b[d][p](a)})});return b}function Ze(){this.b=[]}Ze[C].Ab=function(a,b){var c=new Ge(n,a),d=this.e=new Xe(c,b);O(this.b,function(a){a(d)});Ka(this.b,0)};Ze[C].Vd=function(a){this.e?a(this.e):this.b[p](a)};function $e(){this.f={};this.b={};this.j={};this.e={};this.d=new Ze}$e[C].Ab=function(a,b){this.d.Ab(a,b)};
function af(a,b){a.f[b]||(a.f[b]=i,a.d.Vd(function(c){O(c.b[b],function(b){a.e[b]||af(a,b)});He(c.e,b)}))}function bf(a,b,c){a.e[b]=c;O(a.b[b],function(a){a(c)});delete a.b[b]}$e[C].Dc=function(a,b){var c=this,d=c.j;c.d.Vd(function(e){var f=e.b[a]||[],g=e.d[a]||[],h=d[a]=Od(f[B],function(){delete d[a];cf[f[0]](b);O(g,function(a){d[a]&&d[a]()})});O(f,function(a){c.e[a]&&h()})})};function df(a,b){Id($e).Dc(a,b)}var cf={},ef=Vc.google.maps;ef.__gjsload__=df;wd(ef.modules,df);delete ef.modules;function S(a,b,c){var d=Id($e);if(d.e[a])b(d.e[a]);else{var e=d.b;e[a]||(e[a]=[]);e[a][p](b);c||af(d,a)}}function ff(a,b){bf(Id($e),a,b)}function gf(a){var b=Fe;Id($e).Ab(a,b)}function hf(a){var b=Yc(jf.l,12),c=[],d=Od(J(b),function(){a[uc](j,c)});O(b,function(a,b){S(a,function(a){c[b]=a;d()},i)})};function kf(){}kf[C].route=function(a,b){S("directions",function(c){c.Vg(a,b,i)})};function T(a,b){this.x=a;this.y=b}var lf=new T(0,0);Ja(T[C],function(){return"("+this.x+", "+this.y+")"});ya(T[C],function(a){return!a?k:a.x==this.x&&a.y==this.y});T[C].round=function(){this.x=od(this.x);this.y=od(this.y)};T[C].Zc=Sc(0);function U(a,b,c,d){ra(this,a);Sa(this,b);this.B=c||"px";this.n=d||"px"}var mf=new U(0,0);Ja(U[C],function(){return"("+this[v]+", "+this[H]+")"});ya(U[C],function(a){return!a?k:a[v]==this[v]&&a[H]==this[H]});function nf(a){this.F=this.D=fa;this.G=this.J=-fa;O(a,P(this,this[kb]))}function of(a,b,c,d){var e=new nf;e.F=a;e.D=b;e.G=c;e.J=d;return e}I=nf[C];oa(I,function(){return!(this.F<this.G&&this.D<this.J)});sa(I,function(a){a&&(this.F=nd(this.F,a.x),this.G=md(this.G,a.x),this.D=nd(this.D,a.y),this.J=md(this.J,a.y))});I.getCenter=function(){return new T((this.F+this.G)/2,(this.D+this.J)/2)};ya(I,function(a){return!a?k:this.F==a.F&&this.D==a.D&&this.G==a.G&&this.J==a.J});I.Va=Sc(3);
var pf=of(-fa,-fa,fa,fa),qf=of(0,0,0,0);function V(){}I=V[C];I.get=function(a){var b=rf(this)[a];if(b){var a=b.tb,b=b.Qe,c="get"+sf(a);return b[c]?b[c]():b.get(a)}return this[a]};I.set=function(a,b){var c=rf(this);if(c[cc](a)){var d=c[a],c=d.tb,d=d.Qe,e="set"+sf(c);if(d[e])d[e](b);else d.set(c,b)}else this[a]=b,tf(this,a)};I.notify=function(a){var b=rf(this);b[cc](a)?(a=b[a],a.Qe[Pb](a.tb)):tf(this,a)};I.setValues=function(a){for(var b in a){var c=a[b],d="set"+sf(b);if(this[d])this[d](c);else this.set(b,c)}};I.setOptions=V[C][Bb];
Ea(I,Pc());function tf(a,b){var c=b+"_changed";if(a[c])a[c]();else a[Hb](b);R[r](a,b[Dc]()+"_changed")}var uf={};function sf(a){return uf[a]||(uf[a]=a[Nb](0,1).toUpperCase()+a[Nb](1))}function vf(a,b,c,d,e){rf(a)[b]={Qe:c,tb:d};e||tf(a,b)}function rf(a){a.gm_accessors_||(a.gm_accessors_={});return a.gm_accessors_}function wf(a){a.gm_bindings_||(a.gm_bindings_={});return a.gm_bindings_}
V[C].bindTo=function(a,b,c,d){var c=c||a,e=this;e[mb](a);wf(e)[a]=R[G](b,c[Dc]()+"_changed",function(){tf(e,a)});vf(e,a,b,c,d)};V[C].unbind=function(a){var b=wf(this)[a];b&&(delete wf(this)[a],R[jb](b),b=this.get(a),delete rf(this)[a],this[a]=b)};V[C].unbindAll=function(){var a=[];wd(wf(this),function(b){a[p](b)});O(a,P(this,this[mb]))};var xf=V;function yf(a,b,c){this.heading=a;this.pitch=yd(b,-90,90);Ta(this,o.max(0,c))}var zf=ee({zoom:N,heading:N,pitch:N});function Af(a){if(!Fd(a)||!a)return""+a;a.__gm_id||(a.__gm_id=++Bf);return""+a.__gm_id}var Bf=0;function Cf(){this.ua={}}Cf[C].X=function(a){var b=this.ua,c=Af(a);b[c]||(b[c]=a,R[r](this,Oe,a),this.b&&this.b(a))};xa(Cf[C],function(a){var b=this.ua,c=Af(a);b[c]&&(delete b[c],R[r](this,Pe,a),this[Sb]&&this[Sb](a))});Ra(Cf[C],function(a){return!!this.ua[Af(a)]});Cf[C].forEach=function(a){var b=this.ua,c;for(c in b)a[hc](this,b[c])};function Df(a){return function(){return this.get(a)}}function Ef(a,b){return b?function(c){b(c)||aa(ja("Invalid value for property <"+(a+(">: "+c))));this.set(a,c)}:function(b){this.set(a,b)}}function Ff(a,b){wd(b,function(b,d){var e=Df(b);a["get"+sf(b)]=e;d&&(e=Ef(b,d),a["set"+sf(b)]=e)})};var Gf="set_at",Hf="insert_at",If="remove_at";function Jf(a){this.b=a||[];Kf(this)}L(Jf,V);I=Jf[C];I.getAt=function(a){return this.b[a]};I.forEach=function(a){for(var b=0,c=this.b[B];b<c;++b)a(this.b[b],b)};I.setAt=function(a,b){var c=this.b[a],d=this.b[B];if(a<d)this.b[a]=b,R[r](this,Gf,a,c),this.gc&&this.gc(a,c);else{for(c=d;c<a;++c)this[ec](c,ca);this[ec](a,b)}};I.insertAt=function(a,b){this.b[Ac](a,0,b);Kf(this);R[r](this,Hf,a);this.ec&&this.ec(a)};
I.removeAt=function(a){var b=this.b[a];this.b[Ac](a,1);Kf(this);R[r](this,If,a,b);this.fc&&this.fc(a,b);return b};I.push=function(a){this[ec](this.b[B],a);return this.b[B]};I.pop=function(){return this[Gb](this.b[B]-1)};I.getArray=Qc("b");function Kf(a){a.set("length",a.b[B])}Fa(I,function(){for(;this.get("length");)this.pop()});Ff(Jf[C],{length:ca});function Lf(){}L(Lf,V);var Mf=V;function Nf(a,b){this.b=a||0;this.e=b||0}Nf[C].heading=Qc("b");Nf[C].Ba=Sc(8);var Of=new Nf;function Pf(){}L(Pf,V);Pf[C].set=function(a,b){b!=j&&(!b||!N(b[pc])||!b[Cb]||!b[Cb][v]||!b[Cb][H]||!b[Ob]||!b[Ob][uc])&&aa(ja("Expected value implementing google.maps.MapType"));return V[C].set[uc](this,arguments)};function Qf(){this.f=[];this.e=this.b=this.d=j};function Rf(){}L(Rf,V);var Sf=[];function Tf(a){this[Bb](a)}L(Tf,V);Ff(Tf[C],{content:ke(fe,Jd,ge),position:he(Q),size:he(U),map:ke(he(Rf),he(Lf)),anchor:he(V),zIndex:le});function Uf(a){this[Bb](a);m[Tb](function(){S(ue,Hd)},100)}L(Uf,Tf);Uf[C].open=function(a,b){this.set("anchor",b);this.set("map",a)};Uf[C].close=function(){this.set("map",j)};Ea(Uf[C],function(a){var b=this;S(ue,function(c){c[Hb](b,a)})});function Vf(a,b,c,d,e){this.url=a;Ma(this,b||e);this.origin=c;this.anchor=d;this.scaledSize=e};function Wf(a){this[Bb](a)}L(Wf,V);Ea(Wf[C],function(a){if("map"==a||"panel"==a){var b=this;S("directions",function(c){c.Pk(b,a)})}});Ff(Wf[C],{directions:qe,map:he(Rf),panel:ke(ge,fe),routeIndex:le});function Xf(){}Xf[C].getDistanceMatrix=function(a,b){S("distance_matrix",function(c){c.b(a,b)})};function Yf(){}Yf[C].getElevationAlongPath=function(a,b){S("elevation",function(c){c.b(a,b)})};Yf[C].getElevationForLocations=function(a,b){S("elevation",function(c){c.e(a,b)})};var Zf,$f;function ag(){S(te,Hd)}ag[C].geocode=function(a,b){S(te,function(c){c.geocode(a,b)})};function bg(a,b,c){this.e=j;this.set("url",a);this.set("bounds",b);this[Bb](c)}L(bg,V);ua(bg[C],function(){var a=this,b=a.e,c=a.e=a.get("map");b!=c&&(b&&b.d[tb](a),c&&c.d.X(a),S("kml",function(b){b.nj(a,a.get("map"))}))});Ff(bg[C],{map:he(Rf),url:j,bounds:j,opacity:le});function cg(a,b){this.set("url",a);this[Bb](b)}L(cg,V);ua(cg[C],function(){var a=this;S("kml",function(b){b.Kk(a)})});Ff(cg[C],{map:he(Rf),defaultViewport:j,metadata:j,status:j,url:j});var dg={UNKNOWN:"UNKNOWN",OK:Kc,INVALID_REQUEST:Fc,DOCUMENT_NOT_FOUND:"DOCUMENT_NOT_FOUND",FETCH_ERROR:"FETCH_ERROR",INVALID_DOCUMENT:"INVALID_DOCUMENT",DOCUMENT_TOO_LARGE:"DOCUMENT_TOO_LARGE",LIMITS_EXCEEDED:"LIMITS_EXECEEDED",TIMED_OUT:"TIMED_OUT"};function eg(){S(ve,Hd)}L(eg,V);ua(eg[C],function(){var a=this;S(ve,function(b){b.b(a)})});Ff(eg[C],{map:he(Rf)});function fg(){S(ve,Hd)}L(fg,V);ua(fg[C],function(){var a=this;S(ve,function(b){b.e(a)})});Ff(fg[C],{map:he(Rf)});function gg(a){this.l=a||[]}function hg(a){this.l=a||[]}var ig=new gg,jg=new gg,kg=new hg;function lg(a){this.l=a||[]}function mg(a){this.l=a||[]}function ng(a){this.l=a||[]}function og(a){this.l=a||[]}function pg(a){this.l=a||[]}function qg(a){this.l=a||[]}Qa(lg[C],function(a){return Yc(this.l,0)[a]});var rg=new lg,sg=new lg,tg=new lg,ug=new lg,vg=new lg,wg=new lg,xg=new lg,yg=new lg,zg=new lg;function Ag(a){a=a.l[0];return a!=j?a:""}function Bg(){var a=Cg(jf).l[1];return a!=j?a:""}function Dg(){var a=Cg(jf).l[9];return a!=j?a:""}function Eg(a){a=a.l[0];return a!=j?a:""}
function Fg(a){a=a.l[1];return a!=j?a:""}function Gg(){var a=jf.l[4],a=(a?new pg(a):Hg).l[0];return a!=j?a:0}function Ig(){var a=jf.l[5];return a!=j?a:1}function Jg(){var a=jf.l[11];return a!=j?a:""}var Kg=new mg,Lg=new ng;function Cg(a){return(a=a.l[2])?new ng(a):Lg}var Mg=new og;function Ng(){var a=jf.l[3];return a?new og(a):Mg}var Hg=new pg;var jf;function Og(){this.b=new T(128,128);this.e=256/360;this.d=256/(2*o.PI)}Og[C].fromLatLngToPoint=function(a,b){var c=b||new T(0,0),d=this.b;c.x=d.x+a.lng()*this.e;var e=yd(o.sin(M(a.lat())),-(1-1.0E-15),1-1.0E-15);c.y=d.y+0.5*o.log((1+e)/(1-e))*-this.d;return c};Og[C].fromPointToLatLng=function(a,b){var c=this.b;return new Q(Bd(2*o[jc](o.exp((a.y-c.y)/-this.d))-o.PI/2),(a.x-c.x)/this.e,b)};function Pg(a,b,c){if(a=a[ab](b))c=o.pow(2,c),a.x*=c,a.y*=c;return a};function Qg(a,b){var c=a.lat()+Bd(b);90<c&&(c=90);var d=a.lat()-Bd(b);-90>d&&(d=-90);var e=o.sin(b),f=o.cos(M(a.lat()));if(90==c||-90==d||1.0E-6>f)return new de(new Q(d,-180),new Q(c,180));e=Bd(o[yc](e/f));return new de(new Q(d,a.lng()-e),new Q(c,a.lng()+e))};function Rg(a){this.Yb=a||0;this.Sb=R[A](this,Ke,this,this.I)}L(Rg,V);Rg[C].O=function(){var a=this;a.f||(a.f=m[Tb](function(){a.f=ca;a.Z()},a.Yb))};Rg[C].I=function(){this.f&&m[$a](this.f);this.f=ca;this.Z()};Rg[C].Z=Pc();Rg[C].Q=Sc(2);function Sg(a,b){var c=a[F];ra(c,b[v]+b.B);Sa(c,b[H]+b.n)}function Tg(a){return new U(a[hb],a[Bc])};function Ug(a){this.l=a||[]}var Vg;function Wg(a){this.l=a||[]}var Xg;function Yg(a){this.l=a||[]}var Zg;function $g(a){this.l=a||[]}var ah;
function bh(a){if(!ah){var b=[];ah={$:-1,Y:b};if(!Xg){var c=[];Xg={$:-1,Y:c};c[1]={type:"i",label:1};c[2]={type:"i",label:1}}b[1]={type:"m",label:1,V:Xg};b[2]={type:"e",label:1};b[3]={type:"u",label:1};Zg||(c=[],Zg={$:-1,Y:c},c[1]={type:"u",label:1},c[2]={type:"u",label:1},c[3]={type:"e",label:1});b[4]={type:"m",label:1,V:Zg};Vg||(c=[],Vg={$:-1,Y:c},c[1]={type:"e",label:1},c[2]={type:"b",label:1},c[3]={type:"b",label:1},c[5]={type:"s",label:1},c[6]={type:"s",label:1},c[100]={type:"b",label:1});b[5]=
{type:"m",label:1,V:Vg}}return ad(a.l,ah)}La($g[C],function(){var a=this.l[2];return a!=j?a:0});za($g[C],function(a){this.l[2]=a});function ch(a,b,c){Rg[hc](this);this.A=b;this.n=new Og;this.B=c+"/maps/api/js/StaticMapService.GetMapImage";this.set("div",a)}L(ch,Rg);var dh={roadmap:0,satellite:2,hybrid:3,terrain:4},eh={"0":1,2:2,3:2,4:2};I=ch[C];I.bf=Df("center");I.af=Df("zoom");function fh(a){var b=a.get("tilt")||a.get("mapMaker")||J(a.get("styles")),a=a.get("mapTypeId");return b?j:dh[a]}
Ea(I,function(){var a=this.bf(),b=this.af(),c=fh(this);if(a&&!a[ub](this.C)||this.d!=b||this.H!=c)gh(this.j),this.O(),this.d=b,this.H=c;this.C=a});function gh(a){a[xc]&&a[xc][dc](a)}
I.Z=function(){var a="",b=this.bf(),c=this.af(),d=fh(this),e=this.get("size");if(b&&1<c&&d!=j&&e&&e[v]&&e[H]&&this.b){Sg(this.b,e);var f;(b=Pg(this.n,b,c))?(f=new nf,f.F=o[w](b.x-e[v]/2),f.G=f.F+e[v],f.D=o[w](b.y-e[H]/2),f.J=f.D+e[H]):f=j;b=eh[d];if(f){var a=new $g,g=1<(22>c&&(m.devicePixelRatio||ha[Xa]&&ha[Xa]/96||1))?2:1,h;a.l[0]=a.l[0]||[];h=new Wg(a.l[0]);h.l[0]=f.F*g;h.l[1]=f.D*g;a.l[1]=b;a[zb](c);a.l[3]=a.l[3]||[];c=new Yg(a.l[3]);c.l[0]=(f.G-f.F)*g;c.l[1]=(f.J-f.D)*g;1<g&&(c.l[2]=2);a.l[4]=
a.l[4]||[];c=new Ug(a.l[4]);c.l[0]=d;c.l[1]=i;c.l[4]=Ag(Cg(jf));d=Bg()[Dc]();if("cn"==d||"in"==d||"kr"==d)c.l[5]=d;a=this.A(this.B+unescape("%3F")+bh(a))}}this.j&&e&&(Sg(this.j,e),e=a,d=this.j,e!=d.src?(gh(d),ma(d,Md(this,this.zf,i)),ta(d,Md(this,this.zf,k)),d.src=e):!d[xc]&&e&&this.b[Ua](d))};I.zf=function(a){var b=this.j;ma(b,j);ta(b,j);a&&(b[xc]||this.b[Ua](b),Sg(b,this.get("size")),R[r](this,Le))};
I.div_changed=function(){var a=this.get("div"),b=this.b;if(a)if(b)a[Ua](b);else{b=this.b=n[vb]("div");Ha(b[F],"hidden");var c=this.j=n[vb]("img");R[rc](b,Je,Td);c.ontouchstart=c.ontouchmove=c.ontouchend=c.ontouchcancel=Rd;Sg(c,mf);a[Ua](b);this.Z()}else b&&(gh(b),this.b=j)};function hh(a){this.b=[];this.e=a||Nd()}var ih;function jh(a,b,c){c=c||Nd()-a.e;ih&&a.b[p]([b,c]);return c};var kh;function lh(a,b){var c=this;c.f=new V;var d=c.controls=[];wd(Uc,function(a,b){d[b]=new Jf});c.N=a;c.setPov(new yf(0,0,1));c[Bb](b);c[gb]()==ca&&c[Rb](i);c.Ub=b&&b.Ub||new Cf;R[Fb](this,"pano_changed",Vd(function(){S(xe,function(a){a.b(c.Ub,c)})}))}L(lh,Lf);va(lh[C],function(){var a=this;!a.d&&a[gb]()&&(a.d=i,S("streetview",function(b){b.f(a)}))});Ff(lh[C],{visible:ne,pano:me,position:he(Q),pov:ke(zf,fe),links:ca,enableCloseButton:ne});lh[C].getContainer=Qc("N");lh[C].M=Qc("f");
lh[C].registerPanoProvider=Ef("panoProvider");function mh(a,b){var c=new nh(b);for(c.b=[a];J(c.b);){var d=c,e=c.b[Ya]();d.e(e);for(e=e[xb];e;e=e.nextSibling)1==e[db]&&d.b[p](e)}}function nh(a){this.e=a};var oh=Vc[Wb]&&Vc[Wb][vb]("div");function ph(a){for(var b;b=a[xb];)qh(b),a[dc](b)}function qh(a){mh(a,function(a){R[Jb](a)})};function rh(a,b){kh&&jh(kh,"mc");var c=this,d=b||{};c[Bb](d);c.d=new Cf;c.Tb=new Jf;c.mapTypes=new Pf;c.features=new xf;var e=c.Ub=new Cf;e.b=function(){delete e.b;S(xe,Vd(function(a){a.b(e,c)}))};c.$d=new Cf;c.ee=new Cf;c.ce=new Cf;Sf[p](a);c.B=new lh(a,{visible:k,enableCloseButton:i,Ub:e});c[Pb]("streetView");c.b=a;var f=Tg(a);d.noClear||ph(a);var g=j;sh(d.useStaticMap,f)&&(g=new ch(a,Zf,Dg()),R[E](g,Le,this),R[Fb](g,Le,function(){jh(kh,"smv")}),g.set("size",f),g[u]("center",c),g[u]("zoom",c),g[u]("mapTypeId",
c),g[u]("styles",c),g[u]("mapMaker",c));c.n=new Mf;c.overlayMapTypes=new Jf;var h=c.controls=[];wd(Uc,function(a,b){h[b]=new Jf});c.j=new Qf;S(we,function(a){a.Ph(c,d,g)})}L(rh,Rf);I=rh[C];I.streetView_changed=function(){this.get("streetView")||this.set("streetView",this.B)};I.getDiv=Qc("b");I.M=Qc("n");I.panBy=function(a,b){var c=this.n;S(we,function(){R[r](c,Me,a,b)})};I.panTo=function(a){var b=this.n;S(we,function(){R[r](b,Ne,a)})};
I.panToBounds=function(a){var b=this.n;S(we,function(){R[r](b,"pantolatlngbounds",a)})};I.fitBounds=function(a){var b=this;S(we,function(c){c.fitBounds(b,a)})};function sh(a,b){if(Ed(a))return!!a;var c=b[v],d=b[H];return 384E3>=c*d&&800>=c&&800>=d}Ff(rh[C],{bounds:j,streetView:he(Lf),center:he(Q),zoom:le,mapTypeId:me,projection:j,heading:le,tilt:le});function th(a){this[Bb](a);S(xe,Hd)}L(th,V);var uh=ke(Jd,he(ea));Ff(th[C],{position:he(Q),title:me,icon:uh,shadow:uh,shape:td,cursor:me,clickable:ne,animation:td,draggable:ne,visible:ne,flat:ne,zIndex:le});th[C].getVisible=function(){return this.get("visible")!=k};th[C].getClickable=function(){return this.get("clickable")!=k};function vh(a){th[hc](this,a)}L(vh,th);ua(vh[C],function(){this.e&&this.e.Ub[tb](this);(this.e=this.get("map"))&&this.e.Ub.X(this)});vh.MAX_ZINDEX=1E6;Ff(vh[C],{map:ke(he(Rf),he(Lf))});function wh(){S(ye,Hd)}wh[C].getMaxZoomAtLatLng=function(a,b){S(ye,function(c){c.getMaxZoomAtLatLng(a,b)})};function xh(a,b){if(Jd(a)||le(a))this.set("tableId",a),this[Bb](b);else this[Bb](a)}L(xh,V);Ea(xh[C],function(a){if(!("suppressInfoWindows"==a||"clickable"==a)){var b=this;S(ze,function(a){a.Jk(b)})}});Ff(xh[C],{map:he(Rf),tableId:le,query:ke(Jd,Fd)});function yh(){}L(yh,V);ua(yh[C],function(){var a=this;S("overlay",function(b){b.b(a)})});Ff(yh[C],{panes:ca,projection:ca,map:ke(he(Rf),he(Lf))});function zh(a){var b,c=k;if(a instanceof Jf)if(0<a.get("length")){var d=a[ac](0);d instanceof Q?(b=new Jf,b[ec](0,a)):d instanceof Jf?d[Zb]()&&!(d[ac](0)instanceof Q)?c=i:b=a:c=i}else b=a;else Pd(a)?0<a[B]?(d=a[0],d instanceof Q?(b=new Jf,b[ec](0,new Jf(a))):Pd(d)?d[B]&&!(d[0]instanceof Q)?c=i:(b=new Jf,O(a,function(a,c){b[ec](c,new Jf(a))})):c=i):b=new Jf:c=i;c&&aa(ja("Invalid value for constructor parameter 0: "+a));return b}function Ah(a){return a&&a.radius||6378137};function Bh(a){this[Bb](a);S(Be,Hd)}L(Bh,V);ua(Bh[C],va(Bh[C],function(){var a=this;S(Be,function(b){b.b(a)})}));na(Bh[C],function(){R[r](this,"bounds_changed")});Bh[C].radius_changed=Bh[C].center_changed;Da(Bh[C],function(){var a=this.get("radius"),b=this.get("center");if(b&&N(a)){var c=this.get("map"),c=c&&c.M().get("mapType");return Qg(b,a/Ah(c))}return j});Ff(Bh[C],{center:he(Q),editable:ne,map:he(Rf),radius:le,visible:ne});function Ch(){this.set("latLngs",new Jf([new Jf]))}L(Ch,V);ua(Ch[C],va(Ch[C],function(){var a=this;S(Be,function(b){b.e(a)})}));Ch[C].getPath=function(){return this.get("latLngs")[ac](0)};Ch[C].setPath=function(a){a=zh(a);this.get("latLngs")[vc](0,a[ac](0)||new Jf)};Ff(Ch[C],{editable:ne,map:he(Rf),visible:ne});function Dh(a){Ch[hc](this);this[Bb](a);S(Be,Hd)}L(Dh,Ch);Dh[C].f=i;Dh[C].getPaths=function(){return this.get("latLngs")};Dh[C].setPaths=function(a){this.set("latLngs",zh(a))};function Eh(a){Ch[hc](this);this[Bb](a);S(Be,Hd)}L(Eh,Ch);Eh[C].f=k;function Fh(a){Rg[hc](this);this[Bb](a);S(Be,Hd)}L(Fh,Rg);ua(Fh[C],va(Fh[C],function(){var a=this;S(Be,function(b){b.d(a)})}));Ff(Fh[C],{editable:ne,bounds:he(de),map:he(Rf),visible:ne});function Gh(){}Gh[C].getPanoramaByLocation=function(a,b,c){var d=this.Pa;S("streetview",function(e){e.d(a,b,c,d)})};Gh[C].getPanoramaById=function(a,b){var c=this.Pa;S("streetview",function(d){d.e(a,b,c)})};function Hh(a){this.b=a}Ia(Hh[C],function(a,b,c){c=c[vb]("div");a={fa:c,qa:a,zoom:b};c.pa=a;this.b.X(a);return c});Oa(Hh[C],function(a){this.b[tb](a.pa);a.pa=j});Hh[C].sb=function(a){R[r](a.pa,"stop",a.pa)};function Ih(a){Aa(this,a[Cb]);Ga(this,a[Kb]);this.alt=a.alt;wa(this,a[pb]);Pa(this,a[pc]);var b=new Cf,c=new Hh(b);Ia(this,P(c,c[Ob]));Oa(this,P(c,c[gc]));this.sb=P(c,c.sb);var d=P(a,a[Ib]);this.set("opacity",a[Yb]);var e=this;S(we,function(c){(new c.uk(b,d,j,a))[u]("opacity",e)})}L(Ih,V);Ih[C].Nb=i;Ff(Ih[C],{opacity:le});function Jh(a,b){var c=b||{};this.C=c.baseMapTypeId||"roadmap";this.A=a;wa(this,c[pb]);Pa(this,c[pc]||20);Ga(this,c[Kb]);this.alt=c.alt;Aa(this,new U(256,256));Ia(this,Hd)};var Kh={Animation:{BOUNCE:1,DROP:2,e:3,b:4},Circle:Bh,ControlPosition:Uc,GroundOverlay:bg,ImageMapType:Ih,InfoWindow:Uf,LatLng:Q,LatLngBounds:de,MVCArray:Jf,MVCObject:V,Map:rh,MapTypeControlStyle:{DEFAULT:0,HORIZONTAL_BAR:1,DROPDOWN_MENU:2},MapTypeId:Tc,MapTypeRegistry:Pf,Marker:vh,MarkerImage:Vf,NavigationControlStyle:{DEFAULT:0,SMALL:1,ANDROID:2,ZOOM_PAN:3,kl:4,Hk:5},OverlayView:yh,Point:T,Polygon:Dh,Polyline:Eh,Rectangle:Fh,ScaleControlStyle:{DEFAULT:0},Size:U,ZoomControlStyle:{DEFAULT:0,SMALL:1,
LARGE:2,Hk:3,ANDROID:4},event:R};
vd(Kh,{BicyclingLayer:eg,DirectionsRenderer:Wf,DirectionsService:kf,DirectionsStatus:{OK:Kc,UNKNOWN_ERROR:Nc,OVER_QUERY_LIMIT:Lc,REQUEST_DENIED:Mc,INVALID_REQUEST:Fc,ZERO_RESULTS:Oc,MAX_WAYPOINTS_EXCEEDED:Jc,NOT_FOUND:"NOT_FOUND"},DirectionsTravelMode:id,DirectionsUnitSystem:hd,DistanceMatrixService:Xf,DistanceMatrixStatus:{OK:Kc,INVALID_REQUEST:Fc,OVER_QUERY_LIMIT:Lc,REQUEST_DENIED:Mc,UNKNOWN_ERROR:Nc,MAX_ELEMENTS_EXCEEDED:Ic,MAX_DIMENSIONS_EXCEEDED:Hc},DistanceMatrixElementStatus:{OK:Kc,NOT_FOUND:"NOT_FOUND",
ZERO_RESULTS:Oc},ElevationService:Yf,ElevationStatus:{OK:Kc,UNKNOWN_ERROR:Nc,OVER_QUERY_LIMIT:Lc,REQUEST_DENIED:Mc,INVALID_REQUEST:Fc,fl:"DATA_NOT_AVAILABLE"},FusionTablesLayer:xh,Geocoder:ag,GeocoderLocationType:{ROOFTOP:"ROOFTOP",RANGE_INTERPOLATED:"RANGE_INTERPOLATED",GEOMETRIC_CENTER:"GEOMETRIC_CENTER",APPROXIMATE:"APPROXIMATE"},GeocoderStatus:{OK:Kc,UNKNOWN_ERROR:Nc,OVER_QUERY_LIMIT:Lc,REQUEST_DENIED:Mc,INVALID_REQUEST:Fc,ZERO_RESULTS:Oc,ERROR:Ec},KmlLayer:cg,KmlLayerStatus:dg,MaxZoomService:wh,
MaxZoomStatus:{OK:Kc,ERROR:Ec},StreetViewPanorama:lh,StreetViewService:Gh,StreetViewStatus:{OK:Kc,UNKNOWN_ERROR:Nc,ZERO_RESULTS:Oc},StyledMapType:Jh,TrafficLayer:fg,TravelMode:id,UnitSystem:hd});function Lh(a){this[Bb](a);S(ze,Hd)}L(Lh,V);Ea(Lh[C],function(a){if(!("map"!=a&&"token"!=a)){var b=this;S(ze,function(a){a.Mk(b)})}});Ff(Lh[C],{map:he(Rf)});function Mh(){this.b=new Cf}L(Mh,V);ua(Mh[C],function(){var a=this[ic]();this.b[yb](function(b){b[sc](a)})});Ff(Mh[C],{map:he(Rf)});function Nh(a){this.e=1729;this.b=a}function Oh(a,b,c){for(var d=ga(b[B]),e=0,f=b[B];e<f;++e)d[e]=b[mc](e);d.unshift(c);b=a.e;a=a.b;e=c=0;for(f=d[B];e<f;++e)c*=b,c+=d[e],c%=a;return c};function Ph(){var a=Gg(),b=new Nh(131071),c=unescape("%26%74%6F%6B%65%6E%3D");return function(d){var d=d[cb](Qh,"%27"),e=d+c;Rh||(Rh=/(?:https?:\/\/[^/]+)?(.*)/);d=Rh[Za](d);return e+Oh(b,d&&d[1],a)}}var Qh=la("'","g"),Rh;function Sh(){var a=new Nh(2147483647);return function(b){return Oh(a,b,0)}};cf.main=function(a){eval(a)};ff("main",{});function Th(){for(var a in ea[C])m[qc]&&m[qc].log("Warning: This site adds property <"+a+"> to Object.prototype. Extending Object.prototype breaks JavaScript for..in loops, which are used heavily in Google Maps API v3.")}
m.google.maps.Load(function(a,b){var c=m.google.maps;Th();"version"in c&&m[qc]&&m[qc].log("Warning: you have included the Google Maps API multiple times on this page. This may cause unexpected errors.");jf=new qg(a);o[kc]()<Ig()&&(ih=i);kh=new hh(b);jh(kh,"jl");Zf=Ph();$f=Sh();var d=Ng();gf(Eg(d));wd(Kh,function(a,b){c[a]=b});pa(c,Fg(d));m[Tb](function(){S("util",function(a){a.b.b()})},5E3);R[rc](m,"unload",R.wg);var e=Jg();e&&hf(function(){eval("window."+e+"()")})});var Uh=new ed;
})();

View File

@ -0,0 +1,16 @@
<!DOCTYPE HTML>
<html manifest="appcache.manifest">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Offline Map example in web browser</title>
<link type="text/css" rel="stylesheet" href="style.css" />
</head>
<body>
<div id="map"></div>
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false"></script>
<script>window.google && window.google.maps || document.write('<script src="gmapapi.js"><\/script>')</script>
<script type="text/javascript" src="webStorage.js"></script>
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript" src="map.js"></script>
</body>
</html>

View File

@ -0,0 +1,125 @@
var element = document.getElementById("map");
var mapTypeIds = [];
for(var type in google.maps.MapTypeId) {
mapTypeIds.push(google.maps.MapTypeId[type]);
}
mapTypeIds.push("OSM");
mapTypeIds.push("MyGmap");
mapTypeIds.push("LocalGmap");
mapTypeIds.push("WebStorageGmap");
mapTypeIds.push("LocalMyGmap");
mapTypeIds.push("WebStorageMyGmap");
var map = new google.maps.Map(element, {
center: new google.maps.LatLng(-22.18416881313122, -47.382545097935264),
zoom: 17,
mapTypeId: "MyGmap",
mapTypeControlOptions: {
mapTypeIds: mapTypeIds,
style: google.maps.MapTypeControlStyle.DROPDOWN_MENU
}
});
map.mapTypes.set("OSM", new google.maps.ImageMapType({
getTileUrl: getOsmTileImgSrc,
tileSize: new google.maps.Size(256, 256),
name: "OSM",
maxZoom: 20
}));
map.mapTypes.set("MyGmap", new google.maps.ImageMapType({
getTileUrl: getGmapTileImgSrc,
tileSize: new google.maps.Size(256, 256),
name: "MyGmap",
maxZoom: 20
}));
map.mapTypes.set("LocalGmap", new google.maps.ImageMapType({
getTileUrl: getLocalTileImgSrc,
tileSize: new google.maps.Size(256, 256),
name: "LocalGmap",
maxZoom: 20
}));
map.mapTypes.set("WebStorageGmap", new google.maps.ImageMapType({
getTileUrl: getWebStorageTileImgSrc,
tileSize: new google.maps.Size(256, 256),
name: "WebStorageGmap",
maxZoom: 20
}));
map.mapTypes.set("LocalMyGmap", new google.maps.ImageMapType({
getTileUrl: function(coord, zoom) {
return checkTileInSprites(coord, zoom) ?
getLocalTileImgSrc(coord, zoom) :
getGmapTileImgSrc(coord, zoom);
},
tileSize: new google.maps.Size(256, 256),
name: "LocalMyGmap",
maxZoom: 20
}));
map.mapTypes.set("WebStorageMyGmap", new google.maps.ImageMapType({
getTileUrl: function(coord, zoom) {
var image = getWebStorageTileImgSrc(coord, zoom);
return image ? image : getGmapTileImgSrc(coord, zoom);
},
tileSize: new google.maps.Size(256, 256),
name: "WebStorageMyGmap",
maxZoom: 20
}));
google.maps.event.addListener(map, 'click', function(point) {
var marker = new google.maps.Marker({
position: point.latLng,
map: map
});
google.maps.event.addListener(marker, 'dblclick', function() {
marker.setMap(null);
});
google.maps.event.addListener(marker, 'click', function() {
new google.maps.InfoWindow({
content: 'lat: ' + point.latLng.lat() + '<br>lng:' + point.latLng.lng()
}).open(map, marker);
});
});
function CustomControl(controlDiv, map, title, handler) {
controlDiv.style.padding = '5px';
var controlUI = document.createElement('DIV');
controlUI.style.backgroundColor = 'white';
controlUI.style.borderStyle = 'solid';
controlUI.style.borderWidth = '2px';
controlUI.style.cursor = 'pointer';
controlUI.style.textAlign = 'center';
controlUI.title = title;
controlDiv.appendChild(controlUI);
var controlText = document.createElement('DIV');
controlText.style.fontFamily = 'Arial,sans-serif';
controlText.style.fontSize = '12px';
controlText.style.paddingLeft = '4px';
controlText.style.paddingRight = '4px';
controlText.innerHTML = title;
controlUI.appendChild(controlText);
google.maps.event.addDomListener(controlUI, 'click', handler);
}
var clearWebStorageDiv = document.createElement('DIV');
var clearWebStorageButton = new CustomControl(clearWebStorageDiv, map,
'Clear Web Storage', clearWebStorage);
var prepareWebStorageDiv = document.createElement('DIV');
var prepareWebStorageButton = new CustomControl(prepareWebStorageDiv, map,
'Prepare Web Storage', prepareWebStorage);
clearWebStorageDiv.index = 1;
prepareWebStorageDiv.index = 1;
map.controls[google.maps.ControlPosition.TOP_RIGHT].push(clearWebStorageDiv);
map.controls[google.maps.ControlPosition.TOP_RIGHT].push(prepareWebStorageDiv);

View File

@ -0,0 +1,136 @@
var spriteRanges = {
// tl = top_left
// br = bottom_right
// {zoom: {tl: {}, br: {}}
0: {
tl: {x: 0, y: 0},
br: {x: 0, y: 0}
},
1: {
tl: {x: 1, y: 0},
br: {x: 1, y: 0}
},
2: {
tl: {x: 2, y: 1},
br: {x: 2, y: 1}
},
3: {
tl: {x: 4, y: 2},
br: {x: 4, y: 2}
},
4: {
tl: {x: 9, y: 5},
br: {x: 9, y: 5}
},
5: {
tl: {x: 18, y: 10},
br: {x: 18, y: 10}
},
6: {
tl: {x: 36, y: 20},
br: {x: 36, y: 20}
},
7: {
tl: {x: 73, y: 41},
br: {x: 73, y: 41}
},
8: {
tl: {x: 147, y: 82},
br: {x: 147, y: 82}
},
9: {
tl: {x: 294, y: 164},
br: {x: 295, y: 164}
},
10: {
tl: {x: 589, y: 328},
br: {x: 591, y: 329}
},
11: {
tl: {x: 1179, y: 657},
br: {x: 1182, y: 659}
},
12: {
tl: {x: 2358, y: 1315},
br: {x: 2364, y: 1319}
},
13: {
tl: {x: 4717, y: 2630},
br: {x: 4728, y: 2639}
},
14: {
tl: {x: 9439, y: 5262},
br: {x: 9452, y: 5277}
},
15: {
tl: {x: 18878, y: 10525},
br: {x: 18905, y: 10554}
},
16: {
tl: {x: 37757, y: 21051},
br: {x: 37810, y: 21108}
}
};
var max_zoom = 13;
var webStorage = new WebStorageFactory().getWebStorage();
function imageToBase64(image) {
var canvas = document.createElement("canvas");
canvas.width = image.width;
canvas.height = image.height;
var context = canvas.getContext("2d");
context.drawImage(image, 0, 0);
return canvas.toDataURL("image/png");
}
function loadImageToWebStorage(zoom, x, y){
var url = "cache/" + zoom + "/" + x + "_" + y + ".png";
var image = new Image();
image.onload = function() {
webStorage.setItem([zoom, x, y].join('_'), imageToBase64(image));
};
image.src = url;
}
function clearWebStorage() {
webStorage.clear();
}
function prepareWebStorage() {
for (var zoom in spriteRanges) {
if (zoom > max_zoom) {
break;
}
var sprites = spriteRanges[zoom];
for (var x=sprites.tl.x; x<=sprites.br.x; x++) {
for (var y=sprites.tl.y; y<=sprites.br.y; y++) {
loadImageToWebStorage(zoom, x, y);
}
}
}
}
function checkTileInSprites(coord, zoom) {
var sprites = spriteRanges[zoom];
return sprites.tl.x <= coord.x && coord.x <= sprites.br.x && sprites.tl.y <= coord.y && coord.y <= sprites.br.y;
}
function getOsmTileImgSrc(coord, zoom) {
return "http://tile.openstreetmap.org/" + zoom + "/" + coord.x + "/" + coord.y + ".png";
}
function getGmapTileImgSrc(coord, zoom) {
return "http://mt0.googleapis.com/vt?src=apiv3&x=" + coord.x + "&y=" + coord.y + "&z=" + zoom;
}
function getLocalTileImgSrc(coord, zoom) {
return "cache/" + zoom + "/" + coord.x + "_" + coord.y + ".png";
}
function getWebStorageTileImgSrc(coord, zoom) {
return webStorage.getItem([zoom, coord.x, coord.y].join('_'));
}

View File

@ -0,0 +1,8 @@
html, body, #map {
height: 100%;
width: 100%;
}
.gmnoprint {
width: auto !important;
}

View File

@ -0,0 +1,29 @@
function LocalStorageWebStorageImpl() {
this.webStorageType = 'localStorage';
this.getItem = function(name) {
return localStorage.getItem(name);
};
this.setItem = function(name, value) {
localStorage.setItem(name, value);
};
this.clear = function() {
localStorage.clear();
};
}
function WebStorageFactory() {
var webStorage = null;
if (window.localStorage) {
webStorage = new LocalStorageWebStorageImpl();
} else {
alert("Your browser don't support localStorage");
}
this.getWebStorage = function() {
return webStorage;
}
}

View File

@ -1 +1 @@
{"Conectado":false,"QuantidadeBicos":4,"AtuacaoNivelAlto":false,"BicosPulverizadores":[{"ID":"B01","Posicao":1,"Atuado":false,"Comandar":true,"Inicializado":false,"Testando":false,"Funcoes":[21,22],"StatusBico":false,"NivelFluxo":0.0},{"ID":"B02","Posicao":2,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21,22],"StatusBico":false,"NivelFluxo":0.0},{"ID":"B03","Posicao":3,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21,22],"StatusBico":false,"NivelFluxo":0.0},{"ID":"B04","Posicao":4,"Atuado":false,"Comandar":true,"Inicializado":false,"Testando":false,"Funcoes":[21,22],"StatusBico":false,"NivelFluxo":0.0},{"ID":"B05","Posicao":5,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21,22],"StatusBico":false,"NivelFluxo":0.0},{"ID":"B06","Posicao":6,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21,22],"StatusBico":false,"NivelFluxo":0.0},{"ID":"B07","Posicao":7,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21,22],"StatusBico":false,"NivelFluxo":0.0},{"ID":"B08","Posicao":8,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21,22],"StatusBico":false,"NivelFluxo":0.0},{"ID":"B09","Posicao":9,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21,22],"StatusBico":false,"NivelFluxo":0.0},{"ID":"B10","Posicao":10,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21,22],"StatusBico":false,"NivelFluxo":0.0}],"PercentualInicioPulverizacao":0.3,"PercentualReservatorio":0.0}
{"Conectado":false,"QuantidadeBicos":4,"AtuacaoNivelAlto":false,"BicosPulverizadores":[{"ID":"B01","Posicao":1,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":0.0},{"ID":"B02","Posicao":2,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":0.0},{"ID":"B03","Posicao":3,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":0.0},{"ID":"B04","Posicao":4,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":0.0},{"ID":"B05","Posicao":5,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":0.0},{"ID":"B06","Posicao":6,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":0.0},{"ID":"B07","Posicao":7,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":0.0},{"ID":"B08","Posicao":8,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":0.0},{"ID":"B09","Posicao":9,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":0.0},{"ID":"B10","Posicao":10,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":0.0}],"Sensores":[{"LogGrafico":[],"ID":"FLXLN","Prioridade":10,"Descricao":"Fluxo na linha principal","Componente":198,"Aferir":false,"DelayAmostragem":200,"Inicializado":false,"Testando":false,"Funcoes":[25],"Parametros":[["Calibragem","00450"]],"UnidadeMedida":"L/m","Leituras":[0.0,0.0],"ValorMinimo":0.0,"ValorMaximo":26.67,"LimiteMaximo":0.0,"LimiteMinimo":0.0},{"LogGrafico":[],"ID":"MASRS","Prioridade":3,"Descricao":"Massa do reservatório de herbicida","Componente":532,"Aferir":false,"DelayAmostragem":1000,"Inicializado":false,"Testando":false,"Funcoes":[22,23],"Parametros":[],"UnidadeMedida":"Kg","Leituras":null,"ValorMinimo":0.0,"ValorMaximo":0.0,"LimiteMaximo":25.0,"LimiteMinimo":3.0},{"LogGrafico":[],"ID":"PRSLN","Prioridade":3,"Descricao":"Pressão na linha principal","Componente":333,"Aferir":true,"DelayAmostragem":1000,"Inicializado":false,"Testando":false,"Funcoes":[24],"Parametros":[],"UnidadeMedida":"psi","Leituras":[0.4,337.0],"ValorMinimo":0.0,"ValorMaximo":0.77,"LimiteMaximo":0.0,"LimiteMinimo":0.0}],"PercentualInicioPulverizacao":0.3,"MassaReservatorio":0.0,"PercentualReservatorio":0.0,"MediaNivelFluxo":0.0,"PressaoLinha":0.4}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
[{"Tipo":1,"Pino":99,"Descricao":"1","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Tipo":1,"Pino":98,"Descricao":"2","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Tipo":1,"Pino":36,"Descricao":"3","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Tipo":1,"Pino":39,"Descricao":"4","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Tipo":1,"Pino":34,"Descricao":"5","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Tipo":1,"Pino":35,"Descricao":"6","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Tipo":1,"Pino":32,"Descricao":"7","Funcao":21,"Habilitado":true,"ComponenteID":"B01"},{"Tipo":1,"Pino":33,"Descricao":"8","Funcao":21,"Habilitado":true,"ComponenteID":"B02"},{"Tipo":1,"Pino":25,"Descricao":"9","Funcao":21,"Habilitado":true,"ComponenteID":"B03"},{"Tipo":1,"Pino":26,"Descricao":"10","Funcao":21,"Habilitado":true,"ComponenteID":"B04"},{"Tipo":1,"Pino":27,"Descricao":"11","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Tipo":1,"Pino":14,"Descricao":"12","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Tipo":1,"Pino":12,"Descricao":"13","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Tipo":1,"Pino":97,"Descricao":"14","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Tipo":1,"Pino":13,"Descricao":"15","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Tipo":1,"Pino":9,"Descricao":"16","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Tipo":1,"Pino":10,"Descricao":"17","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Tipo":1,"Pino":11,"Descricao":"18","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Tipo":1,"Pino":96,"Descricao":"19","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Tipo":1,"Pino":6,"Descricao":"26","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Tipo":1,"Pino":7,"Descricao":"27","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Tipo":1,"Pino":8,"Descricao":"28","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Tipo":1,"Pino":15,"Descricao":"29","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Tipo":1,"Pino":2,"Descricao":"30","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Tipo":1,"Pino":0,"Descricao":"31","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Tipo":1,"Pino":4,"Descricao":"32","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Tipo":1,"Pino":16,"Descricao":"33","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Tipo":1,"Pino":17,"Descricao":"34","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Tipo":1,"Pino":5,"Descricao":"35","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Tipo":1,"Pino":18,"Descricao":"36","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Tipo":1,"Pino":19,"Descricao":"37","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Tipo":1,"Pino":95,"Descricao":"38","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Tipo":1,"Pino":21,"Descricao":"39","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Tipo":1,"Pino":3,"Descricao":"40","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Tipo":1,"Pino":1,"Descricao":"41","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Tipo":1,"Pino":22,"Descricao":"42","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Tipo":1,"Pino":23,"Descricao":"43","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Tipo":1,"Pino":94,"Descricao":"44","Funcao":0,"Habilitado":true,"ComponenteID":""}]
[{"Tipo":1,"Pino":99,"Descricao":"1","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Tipo":1,"Pino":98,"Descricao":"2","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Tipo":1,"Pino":36,"Descricao":"3","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Tipo":1,"Pino":39,"Descricao":"4","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Tipo":1,"Pino":34,"Descricao":"5","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Tipo":1,"Pino":35,"Descricao":"6","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Tipo":1,"Pino":32,"Descricao":"7","Funcao":21,"Habilitado":true,"ComponenteID":"B01"},{"Tipo":1,"Pino":33,"Descricao":"8","Funcao":21,"Habilitado":true,"ComponenteID":"B02"},{"Tipo":1,"Pino":25,"Descricao":"9","Funcao":21,"Habilitado":true,"ComponenteID":"B03"},{"Tipo":1,"Pino":26,"Descricao":"10","Funcao":21,"Habilitado":true,"ComponenteID":"B04"},{"Tipo":1,"Pino":27,"Descricao":"11","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Tipo":1,"Pino":14,"Descricao":"12","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Tipo":1,"Pino":12,"Descricao":"13","Funcao":24,"Habilitado":true,"ComponenteID":"PRSLN"},{"Tipo":1,"Pino":97,"Descricao":"14","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Tipo":1,"Pino":13,"Descricao":"15","Funcao":25,"Habilitado":true,"ComponenteID":"FLXLN"},{"Tipo":1,"Pino":9,"Descricao":"16","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Tipo":1,"Pino":10,"Descricao":"17","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Tipo":1,"Pino":11,"Descricao":"18","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Tipo":1,"Pino":96,"Descricao":"19","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Tipo":1,"Pino":6,"Descricao":"26","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Tipo":1,"Pino":7,"Descricao":"27","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Tipo":1,"Pino":8,"Descricao":"28","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Tipo":1,"Pino":15,"Descricao":"29","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Tipo":1,"Pino":2,"Descricao":"30","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Tipo":1,"Pino":0,"Descricao":"31","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Tipo":1,"Pino":4,"Descricao":"32","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Tipo":1,"Pino":16,"Descricao":"33","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Tipo":1,"Pino":17,"Descricao":"34","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Tipo":1,"Pino":5,"Descricao":"35","Funcao":22,"Habilitado":true,"ComponenteID":"MASRS"},{"Tipo":1,"Pino":18,"Descricao":"36","Funcao":23,"Habilitado":true,"ComponenteID":"MASRS"},{"Tipo":1,"Pino":19,"Descricao":"37","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Tipo":1,"Pino":95,"Descricao":"38","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Tipo":1,"Pino":21,"Descricao":"39","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Tipo":1,"Pino":3,"Descricao":"40","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Tipo":1,"Pino":1,"Descricao":"41","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Tipo":1,"Pino":22,"Descricao":"42","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Tipo":1,"Pino":23,"Descricao":"43","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Tipo":1,"Pino":94,"Descricao":"44","Funcao":0,"Habilitado":true,"ComponenteID":""}]

Some files were not shown because too many files have changed in this diff Show More