Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 19

Scripts -> Graficas -> Mapas

function ActualizaMapa(data) {

am4core.useTheme(am4themes_animated);
// Themes end

// Create map instance


var chart = am4core.create("chartdivMapa", am4maps.MapChart);
chart.maxZoomLevel = 64;

// Set map definition


chart.geodata = am4geodata_mexicoLow;

// Set projection
chart.projection = new am4maps.projections.Miller();

// Add button
var zoomOut = chart.tooltipContainer.createChild(am4core.ZoomOutButton);
zoomOut.align = "right";
zoomOut.valign = "top";
zoomOut.margin(20, 20, 20, 20);
zoomOut.events.on("hit", function () {
if (currentSeries) {
currentSeries.hide();
}
chart.goHome();
zoomOut.hide();
currentSeries = regionalSeries.MX.series;
currentSeries.show();
});
zoomOut.hide();

// Create map polygon series


var polygonSeries = chart.series.push(new am4maps.MapPolygonSeries());
polygonSeries.useGeodata = true;
polygonSeries.calculateVisualCenter = true;

// Configure series
var polygonTemplate = polygonSeries.mapPolygons.template;
polygonTemplate.tooltipText = "{name}";
polygonTemplate.fill = chart.colors.getIndex(0);

// Load data when map polygons are ready


chart.events.on("ready", loadProyectos);

// Loads store data


function loadProyectos() {
var loader = new am4core.DataSource();

//loader.url = "https://s3-us-west-2.amazonaws.com/s.cdpn.io/t-
160/TargetStores.json";

var strToProyectosJSONArr = JSON.parse


(
'{"query_results":[' +
'{"co_loc_n":"Zapoteca De Energia
1","CO_LOC_REF_I":"70000","MAIL_ST_PROV_C":"OAX","LNGTD_I":"-
94.8319305555556","LATTD_I":"16.5198861111111","mail_city_n":"Juchitan De Zaragoza
","count":"70000"},' +

'{"co_loc_n":"Ecowind","CO_LOC_REF_I":"70000","MAIL_ST_PROV_C":"OAX","LNGTD_I":"-
94.8319305555556","LATTD_I":"16.5198861111111","mail_city_n":"Juchitan De
Zaragoza","count":"70000"},' +
'{"co_loc_n":"Central Eolica Gunaa
Sicaru","CO_LOC_REF_I":"70102","MAIL_ST_PROV_C":"OAX","LNGTD_I":"-
94.8318388888889","LATTD_I":"16.5217444444444","mail_city_n":"Juchitan De
Zaragoza","count":"70102"},' +
'{"co_loc_n":"Parque Eolico
Iggu","CO_LOC_REF_I":"70000","MAIL_ST_PROV_C":"OAX","LNGTD_I":"-
95.1589583333333","LATTD_I":"16.5240166666667","mail_city_n":"Juchitan De
Zaragoza","count":"70000"},' +
'{"co_loc_n":"Solar Juchitan
","CO_LOC_REF_I":"41920","MAIL_ST_PROV_C":"GRO","LNGTD_I":"-
98.6871638888889","LATTD_I":"16.6106361111111","mail_city_n":"Juchitan","count":"41
920"},' +
'{"co_loc_n":"Asuncion
Ixtaltepec","CO_LOC_REF_I":"70000","MAIL_ST_PROV_C":"OAX","LNGTD_I":"-
95.0571694444444","LATTD_I":"16.5269111111111","mail_city_n":"Juchitan De
Zaragoza","count":"70000"},' +
'{"co_loc_n":"Asuncion
Ixtaltepec","CO_LOC_REF_I":"70000","MAIL_ST_PROV_C":"OAX","LNGTD_I":"-
95.0571694444444","LATTD_I":"16.5269111111111","mail_city_n":"Juchitan De
Zaragoza","count":"70000"},' +
'{"co_loc_n":"Asuncion
Ixtaltepec","CO_LOC_REF_I":"70000","MAIL_ST_PROV_C":"OAX","LNGTD_I":"-
95.0571694444444","LATTD_I":"16.5269111111111","mail_city_n":"Juchitan De
Zaragoza","count":"70000"},' +
'{"co_loc_n":"Eolica Del
Sur","CO_LOC_REF_I":"70033","MAIL_ST_PROV_C":"OAX","LNGTD_I":"-
94.9521111111111","LATTD_I":"16.4663861111111","mail_city_n":"Juchitan De
Zaragoza","count":"70033"},' +
'{"co_loc_n":"Eolica Del
Sur","CO_LOC_REF_I":"70033","MAIL_ST_PROV_C":"OAX","LNGTD_I":"-
94.9521111111111","LATTD_I":"16.4663861111111","mail_city_n":"Juchitan De
Zaragoza","count":"70033"},' +
'{"co_loc_n":"Central Eolica Gunaa
Sicaru","CO_LOC_REF_I":"70102","MAIL_ST_PROV_C":"OAX","LNGTD_I":"-
94.8666666666667","LATTD_I":"16.5258333333333","mail_city_n":"Juchitan De
Zaragoza","count":"70102"},' +
'{"co_loc_n":"Central Eolica Gunaa
Sicaru","CO_LOC_REF_I":"70102","MAIL_ST_PROV_C":"OAX","LNGTD_I":"-
94.8666666666667","LATTD_I":"16.5258333333333","mail_city_n":"Juchitan De
Zaragoza","count":"70102"},' +

'{"co_loc_n":"","CO_LOC_REF_I":"","MAIL_ST_PROV_C":"","LNGTD_I":"","LATTD_I":"","ma
il_city_n":"","count":""},' +
'{"co_loc_n":"Aguascalientes Sur
Ii","CO_LOC_REF_I":"20395","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.222594444444","LATTD_I":"21.7666388888889","mail_city_n":"Aguascalientes","coun
t":"20395"},' +
'{"co_loc_n":"Aguascalientes Sur
Ii","CO_LOC_REF_I":"20395","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.217325","LATTD_I":"21.7678527777778","mail_city_n":"Aguascalientes","count":"20
395"},' +
'{"co_loc_n":"Aguascalientes Sur
Ii","CO_LOC_REF_I":"20395","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.217308333333","LATTD_I":"21.7564611111111","mail_city_n":"Aguascalientes","coun
t":"20395"},' +
'{"co_loc_n":"Aguascalientes Sur
Ii","CO_LOC_REF_I":"20395","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.228297222222","LATTD_I":"21.7581666666667","mail_city_n":"Aguascalientes","coun
t":"20395"},' +
'{"co_loc_n":"Aguascalientes Sur
Ii","CO_LOC_REF_I":"20395","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.217325","LATTD_I":"21.7678527777778","mail_city_n":"Aguascalientes","count":"20
395"},' +
'{"co_loc_n":"Aguascalientes Sur
Ii","CO_LOC_REF_I":"20395","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.217325","LATTD_I":"21.7678527777778","mail_city_n":"Aguascalientes","count":"20
395"},' +
'{"co_loc_n":"Aguascalientes Sur
Iii","CO_LOC_REF_I":"20395","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.215991666667","LATTD_I":"21.760275","mail_city_n":"Aguascalientes","count":"203
95"},' +
'{"co_loc_n":"Aguascalientes Sur
Iii","CO_LOC_REF_I":"20395","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.215991666667","LATTD_I":"21.760275","mail_city_n":"Aguascalientes","count":"203
95"},' +
'{"co_loc_n":"Aguascalientes Sur
Ii","CO_LOC_REF_I":"20395","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.21885","LATTD_I":"21.7663194444444","mail_city_n":"Aguascalientes","count":"203
95"},' +
'{"co_loc_n":"Aguascalientes Sur
Ii","CO_LOC_REF_I":"20395","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.21885","LATTD_I":"21.7663194444444","mail_city_n":"Aguascalientes","count":"203
95"},' +
'{"co_loc_n":"Ps Aguascalientes Sur
I","CO_LOC_REF_I":"20395","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.221097222222","LATTD_I":"21.7622194444444","mail_city_n":"Aguascalientes","coun
t":"20395"},' +
'{"co_loc_n":"Ps Aguascalientes Sur
I","CO_LOC_REF_I":"20395","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.220316666667","LATTD_I":"21.7618583333333","mail_city_n":"Aguascalientes","coun
t":"20395"},' +
'{"co_loc_n":"Ps Aguascalientes Sur
I","CO_LOC_REF_I":"20395","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.201272222222","LATTD_I":"21.7732138888889","mail_city_n":"Aguascalientes","coun
t":"20395"},' +
'{"co_loc_n":"Ps Aguascalientes Sur
I","CO_LOC_REF_I":"20395","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.201272222222","LATTD_I":"21.7732138888889","mail_city_n":"Aguascalientes","coun
t":"20395"},' +
'{"co_loc_n":"Ps Aguascalientes Sur
I","CO_LOC_REF_I":"20395","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.201272222222","LATTD_I":"21.7732138888889","mail_city_n":"Aguascalientes","coun
t":"20395"},' +
'{"co_loc_n":"Ps Aguascalientes Sur
I","CO_LOC_REF_I":"20395","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.201272222222","LATTD_I":"21.7732138888889","mail_city_n":"Aguascalientes","coun
t":"20395"},' +
'{"co_loc_n":"Ps Aguascalientes Sur
I","CO_LOC_REF_I":"20395","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.201272222222","LATTD_I":"21.7732138888889","mail_city_n":"Aguascalientes","coun
t":"20395"},' +
'{"co_loc_n":"Ps Aguascalientes Sur
I","CO_LOC_REF_I":"20395","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.201272222222","LATTD_I":"21.7732138888889","mail_city_n":"Aguascalientes","coun
t":"20395"},' +
'{"co_loc_n":"Minth Mexico Coatings, S.A. De
C.V.","CO_LOC_REF_I":"20283","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.290988888889","LATTD_I":"21.7978388888889","mail_city_n":"Aguascalientes","coun
t":"20283"},' +
'{"co_loc_n":"Minth Mexico Coatings, S.A. De
C.V.","CO_LOC_REF_I":"20283","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.290988888889","LATTD_I":"21.7978388888889","mail_city_n":"Aguascalientes","coun
t":"20283"},' +
'{"co_loc_n":"Minth Mexico Coatings, S.A. De
C.V.","CO_LOC_REF_I":"20283","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.290988888889","LATTD_I":"21.7978388888889","mail_city_n":"Aguascalientes","coun
t":"20283"},' +
'{"co_loc_n":"Minth Mexico Coatings, S.A. De
C.V.","CO_LOC_REF_I":"20283","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.290988888889","LATTD_I":"21.7978388888889","mail_city_n":"Aguascalientes","coun
t":"20283"},' +
'{"co_loc_n":"Subestacion De Potencia 15/20/25 Mva, 115/13.8
Kv","CO_LOC_REF_I":"20283","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.290988888889","LATTD_I":"21.7978388888889","mail_city_n":"Aguascalientes","coun
t":"20283"},' +
'{"co_loc_n":"Hidrocalida
Solar","CO_LOC_REF_I":"20317","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.374205555556","LATTD_I":"21.8839638888889","mail_city_n":"Aguascalientes","coun
t":"20317"},' +
'{"co_loc_n":"Hidrocalida
Solar","CO_LOC_REF_I":"20317","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.374205555556","LATTD_I":"21.8839638888889","mail_city_n":"Aguascalientes","coun
t":"20317"},' +
'{"co_loc_n":"Hidrocalida Solar
I","CO_LOC_REF_I":"20317","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.379230555556","LATTD_I":"21.8798111111111","mail_city_n":"Aguascalientes","coun
t":"20317"},' +
'{"co_loc_n":"Hidrocalida Solar
I","CO_LOC_REF_I":"20317","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.379230555556","LATTD_I":"21.8798111111111","mail_city_n":"Aguascalientes","coun
t":"20317"},' +

'{"co_loc_n":"Aguascalientes","CO_LOC_REF_I":"20394","MAIL_ST_PROV_C":"AGU","LNGTD_
I":"-
102.216272222222","LATTD_I":"21.7640055555556","mail_city_n":"Aguascalientes","coun
t":"20394"},' +
'{"co_loc_n":"Parque Solar Los
Cuervos","CO_LOC_REF_I":"20395","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.190352777778","LATTD_I":"21.7547083333333","mail_city_n":"Aguascalientes","coun
t":"20395"},' +
'{"co_loc_n":"Parque Solar Los
Cuervos","CO_LOC_REF_I":"20395","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.190352777778","LATTD_I":"21.7547083333333","mail_city_n":"Aguascalientes","coun
t":"20395"},' +
'{"co_loc_n":"Parque Solar Los
Cuervos","CO_LOC_REF_I":"20395","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.190352777778","LATTD_I":"21.7547083333333","mail_city_n":"Aguascalientes","coun
t":"20395"},' +
'{"co_loc_n":"Parque Solar Los
Cuervos","CO_LOC_REF_I":"20395","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.190352777778","LATTD_I":"21.7547083333333","mail_city_n":"Aguascalientes","coun
t":"20395"},' +

'{"co_loc_n":"Trompezon","CO_LOC_REF_I":"20395","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.174444444444","LATTD_I":"21.7341666666667","mail_city_n":"Aguascalientes","coun
t":"20395"},' +

'{"co_loc_n":"Trompezon","CO_LOC_REF_I":"20395","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.174444444444","LATTD_I":"21.7341666666667","mail_city_n":"Aguascalientes","coun
t":"20395"},' +

'{"co_loc_n":"Trompezon","CO_LOC_REF_I":"20395","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.174444444444","LATTD_I":"21.7341666666667","mail_city_n":"Aguascalientes","coun
t":"20395"},' +

'{"co_loc_n":"Trompezon","CO_LOC_REF_I":"20395","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.174444444444","LATTD_I":"21.7341666666667","mail_city_n":"Aguascalientes","coun
t":"20395"},' +

'{"co_loc_n":"Trompezon","CO_LOC_REF_I":"20395","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.174444444444","LATTD_I":"21.7341666666667","mail_city_n":"Aguascalientes","coun
t":"20395"},' +
'{"co_loc_n":"Vesta Park Aguascalientes
I","CO_LOC_REF_I":"20340","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.296497222222","LATTD_I":"21.7423527777778","mail_city_n":"Aguascalientes","coun
t":"20340"},' +
'{"co_loc_n":"Vesta Park Aguascalientes
I","CO_LOC_REF_I":"20340","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.296497222222","LATTD_I":"21.7423527777778","mail_city_n":"Aguascalientes","coun
t":"20340"},' +
'{"co_loc_n":"Vesta Park Aguascalientes
I","CO_LOC_REF_I":"20340","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.296497222222","LATTD_I":"21.7423527777778","mail_city_n":"Aguascalientes","coun
t":"20340"},' +
'{"co_loc_n":"Aguascalientes Potencia
1","CO_LOC_REF_I":"20395","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.205838888889","LATTD_I":"21.7595444444444","mail_city_n":"Aguascalientes","coun
t":"20395"},' +
'{"co_loc_n":"Aguascalientes Potencia
1","CO_LOC_REF_I":"20395","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.205838888889","LATTD_I":"21.7595444444444","mail_city_n":"Aguascalientes","coun
t":"20395"},' +
'{"co_loc_n":"Aguascalientes Potencia
1","CO_LOC_REF_I":"20395","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.205838888889","LATTD_I":"21.7595444444444","mail_city_n":"Aguascalientes","coun
t":"20395"},' +
'{"co_loc_n":"Aguascalientes Potencia
1","CO_LOC_REF_I":"20395","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.205838888889","LATTD_I":"21.7595444444444","mail_city_n":"Aguascalientes","coun
t":"20395"},' +
'{"co_loc_n":"Aguascalientes Potencia
1","CO_LOC_REF_I":"20395","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.205838888889","LATTD_I":"21.7595444444444","mail_city_n":"Aguascalientes","coun
t":"20395"},' +
'{"co_loc_n":"Parque Industrial Finsa
Aguascalientes","CO_LOC_REF_I":"20392","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.279763888889","LATTD_I":"21.7504333333333","mail_city_n":"Aguascalientes","coun
t":"20392"},' +
'{"co_loc_n":"Parque Industrial Finsa
Aguascalientes","CO_LOC_REF_I":"20392","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.279763888889","LATTD_I":"21.7504333333333","mail_city_n":"Aguascalientes","coun
t":"20392"},' +
'{"co_loc_n":"Aguascalientes Potencia
2","CO_LOC_REF_I":"20395","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.202955555556","LATTD_I":"21.7529277777778","mail_city_n":"Aguascalientes","coun
t":"20395"},' +
'{"co_loc_n":"Aguascalientes Potencia
2","CO_LOC_REF_I":"20395","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.204375","LATTD_I":"21.7538722222222","mail_city_n":"Aguascalientes","count":"20
395"},' +
'{"co_loc_n":"Aguascalientes Potencia
1","CO_LOC_REF_I":"20395","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.203627777778","LATTD_I":"21.7534416666667","mail_city_n":"Aguascalientes","coun
t":"20395"},' +
'{"co_loc_n":"Planta Fundicion
2","CO_LOC_REF_I":"20340","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.318419444444","LATTD_I":"21.7247611111111","mail_city_n":"Aguascalientes","coun
t":"20340"},' +
'{"co_loc_n":"Planta Fundicion
2","CO_LOC_REF_I":"20340","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.318419444444","LATTD_I":"21.7247611111111","mail_city_n":"Aguascalientes","coun
t":"20340"},' +
'{"co_loc_n":"Planta Fundicion
2","CO_LOC_REF_I":"20340","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.318419444444","LATTD_I":"21.7247611111111","mail_city_n":"Aguascalientes","coun
t":"20340"},' +
'{"co_loc_n":"Planta Fundicion
2","CO_LOC_REF_I":"20340","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.318419444444","LATTD_I":"21.7247611111111","mail_city_n":"Aguascalientes","coun
t":"20340"},' +
'{"co_loc_n":"Planta Fundicion
2","CO_LOC_REF_I":"20340","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.318419444444","LATTD_I":"21.7247611111111","mail_city_n":"Aguascalientes","coun
t":"20340"},' +
'{"co_loc_n":"Np Energia
Aguascalientes","CO_LOC_REF_I":"20395","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.258508333333","LATTD_I":"21.7607777777778","mail_city_n":"Aguascalientes","coun
t":"20395"},' +
'{"co_loc_n":"Np Energia
Aguascalientes","CO_LOC_REF_I":"20395","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.167222222222","LATTD_I":"21.7558333333333","mail_city_n":"Aguascalientes","coun
t":"20395"},' +
'{"co_loc_n":"Lala Aguascalientes Cambio De Punto De
Conexion","CO_LOC_REF_I":"20290","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.278972222222","LATTD_I":"21.8432222222222","mail_city_n":"Aguascalientes","coun
t":"20290"},' +
'{"co_loc_n":"Lala Aguascalientes Cambio De Punto De
Conexion","CO_LOC_REF_I":"20290","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.278972222222","LATTD_I":"21.8432222222222","mail_city_n":"Aguascalientes","coun
t":"20290"},' +
'{"co_loc_n":"Fotovoltaica San
Bartolo","CO_LOC_REF_I":"20395","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.203602777778","LATTD_I":"21.755375","mail_city_n":"Aguascalientes","count":"203
95"},' +
'{"co_loc_n":"Fotovoltaica San
Bartolo","CO_LOC_REF_I":"20395","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.201922222222","LATTD_I":"21.7531638888889","mail_city_n":"Aguascalientes","coun
t":"20395"},' +
'{"co_loc_n":"Fotovoltaica San
Bartolo","CO_LOC_REF_I":"20395","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.201922222222","LATTD_I":"21.7531638888889","mail_city_n":"Aguascalientes","coun
t":"20395"},' +
'{"co_loc_n":"Fotovoltaica San
Bartolo","CO_LOC_REF_I":"20395","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.201922222222","LATTD_I":"21.7531638888889","mail_city_n":"Aguascalientes","coun
t":"20395"},' +
'{"co_loc_n":"Fotovoltaica San
Bartolo","CO_LOC_REF_I":"20395","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.201922222222","LATTD_I":"21.7531638888889","mail_city_n":"Aguascalientes","coun
t":"20395"},' +
'{"co_loc_n":"Ema
Aguascalientes","CO_LOC_REF_I":"20366","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.1825","LATTD_I":"21.9188888888889","mail_city_n":"Aguascalientes","count":"2036
6"},' +
'{"co_loc_n":"Ema
Aguascalientes","CO_LOC_REF_I":"20366","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.1825","LATTD_I":"21.9188888888889","mail_city_n":"Aguascalientes","count":"2036
6"},' +
'{"co_loc_n":"Ema
Aguascalientes","CO_LOC_REF_I":"20304","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.237916666667","LATTD_I":"22.0666666666667","mail_city_n":"Aguascalientes","coun
t":"20304"},' +
'{"co_loc_n":"Ema
Aguascalientes","CO_LOC_REF_I":"20304","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.237916666667","LATTD_I":"22.0666666666667","mail_city_n":"Aguascalientes","coun
t":"20304"},' +
'{"co_loc_n":"Vesta Park Aguascalientes
I","CO_LOC_REF_I":"20340","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.296552777778","LATTD_I":"21.7424444444444","mail_city_n":"Aguascalientes","coun
t":"20340"},' +
'{"co_loc_n":"Vesta Park Aguascalientes
I","CO_LOC_REF_I":"20340","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.296552777778","LATTD_I":"21.7424444444444","mail_city_n":"Aguascalientes","coun
t":"20340"},' +
'{"co_loc_n":"Pf Proton
I","CO_LOC_REF_I":"20386","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.162163888889","LATTD_I":"21.7932","mail_city_n":"Aguascalientes","count":"20386
"},' +
'{"co_loc_n":"Pf Proton
I","CO_LOC_REF_I":"20386","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.159547222222","LATTD_I":"21.7930416666667","mail_city_n":"Aguascalientes","coun
t":"20386"},' +
'{"co_loc_n":"Bay Energy
Apot","CO_LOC_REF_I":"20396","MAIL_ST_PROV_C":"AGU","LNGTD_I":"-
102.250280555556","LATTD_I":"21.6739305555556","mail_city_n":"Aguascalientes","coun
t":"20396"}' +
']} '
);

//loader.events.on("parseended", function (ev) {

// var evtargetdate = ev.target.data;

// evtargetdate = strToProyectosJSONArr;

// setupStores(ev.target.data);
// //setupStores(strToProyectosJSONArr);

//});

setupProyectos(strToProyectosJSONArr);

loader.load();
}

// Creates a series
function createSeries(heatfield) {
var series = chart.series.push(new am4maps.MapImageSeries());
series.dataFields.value = heatfield;

var template = series.mapImages.template;


template.verticalCenter = "middle";
template.horizontalCenter = "middle";
template.propertyFields.latitude = "lat";
template.propertyFields.longitude = "long";
template.tooltipText = "{name}:\n[bold]{proyectos} proyectos[/]";

var circle = template.createChild(am4core.Circle);


circle.radius = 10;
circle.fillOpacity = 0.7;
circle.verticalCenter = "middle";
circle.horizontalCenter = "middle";
circle.nonScaling = true;

var label = template.createChild(am4core.Label);


label.text = "{proyectos}";
label.fill = am4core.color("#fff");
label.verticalCenter = "middle";
label.horizontalCenter = "middle";
label.nonScaling = true;

var heat = series.heatRules.push({


target: circle,
property: "radius",
min: 10,
max: 30
});

// Set up drill-down
series.mapImages.template.events.on("hit", function (ev) {

// Determine what we've clicked on


var data = ev.target.dataItem.dataContext;

// No id? Individual store - nothing to drill down to further


if (!data.target) {
return;
}

// Create actual series if it hasn't been yet created


if (!regionalSeries[data.target].series) {
regionalSeries[data.target].series = createSeries("count");
regionalSeries[data.target].series.data = data.markerData;
}
// Hide current series
if (currentSeries) {
currentSeries.hide();
}

// Control zoom
if (data.type == "state") {
var statePolygon = polygonSeries.getPolygonById("MX-" + data.state);
chart.zoomToMapObject(statePolygon);
}
else if (data.type == "city") {
chart.zoomToGeoPoint({
latitude: data.lat,
longitude: data.long
}, 64, true);
}
zoomOut.show();

// Show new targert series


currentSeries = regionalSeries[data.target].series;
currentSeries.show();
});

return series;
}

var regionalSeries = {};


var currentSeries;

function setupProyectos(data) {

// Init country-level series


regionalSeries.MX = {
markerData: [],
series: createSeries("proyectos")
};

// Set current series


currentSeries = regionalSeries.MX.series;

// Process data
am4core.array.each(data.query_results, function (store) {

// Get store data


var store = {
state: store.MAIL_ST_PROV_C,
long: am4core.type.toNumber(store.LNGTD_I),
lat: am4core.type.toNumber(store.LATTD_I),
location: store.co_loc_n,
city: store.mail_city_n,
count: am4core.type.toNumber(store.count)
};

// Process state-level data


if (regionalSeries[store.state] == undefined) {
var statePolygon = polygonSeries.getPolygonById("MX-" + store.state);
if (statePolygon) {

// Add state data


regionalSeries[store.state] = {
target: store.state,
type: "state",
name: statePolygon.dataItem.dataContext.name,
count: store.count,
proyectos: 1,
lat: statePolygon.visualLatitude,
long: statePolygon.visualLongitude,
state: store.state,
markerData: []
};
regionalSeries.MX.markerData.push(regionalSeries[store.state]);

}
else {
// State not found
return;
}
}
else {
regionalSeries[store.state].proyectos++;
regionalSeries[store.state].count += store.count;
}

// Process city-level data


if (regionalSeries[store.city] == undefined) {
regionalSeries[store.city] = {
target: store.city,
type: "city",
name: store.city,
count: store.count,
proyectos: 1,
lat: store.lat,
long: store.long,
state: store.state,
markerData: []
};

regionalSeries[store.state].markerData.push(regionalSeries[store.city]);
}
else {
regionalSeries[store.city].proyectos++;
regionalSeries[store.city].count += store.count;
}

// Process individual store


regionalSeries[store.city].markerData.push({
name: store.location,
count: store.count,
proyectos: 1,
lat: store.lat,
long: store.long,
state: store.state
});

});

regionalSeries.MX.series.data = regionalSeries.MX.markerData;
}
}

Views -> Home -> Index.cshtml

@section scripts{

<!-- AmCharts -->


@*------- <script src="https://www.amcharts.com/lib/4/core.js"></script>
------- <script src="https://www.amcharts.com/lib/4/charts.js"></script>
------- <script
src="https://www.amcharts.com/lib/4/themes/animated.js"></script>
------- <script
src="https://www.amcharts.com/lib/4/plugins/forceDirected.js"></script>*@

<script src="~/Areas/CNCReportes/Scripts/amCharts/core.js"></script>

<script src="~/Areas/CNCReportes/Scripts/amCharts/charts.js"></script>

<!-- AmCharts Mapa-->


@*------- <script src="https://www.amcharts.com/lib/4/maps.js"></script>*@
<script src="~/Areas/CNCReportes/Scripts/amCharts/maps.js"></script>

<script src="https://www.amcharts.com/lib/4/geodata/mexicoLow.js"></script>

<script src="https://www.amcharts.com/lib/4/geodata/usaLow.js"></script>
@*------- <script
src="~/Areas/CNCReportes/Scripts/amCharts/mexicoLow.js"></script>*@

<script src="https://www.amcharts.com/lib/4/themes/kelly.js"></script>

<script src="~/Areas/CNCReportes/Scripts/amCharts/animated.js"></script>

<script src="~/Areas/CNCReportes/Scripts/amCharts/forceDirected.js"></script>

<!-- Graficas -->


<script src="~/Areas/CNCReportes/Scripts/Graficas/Graficas.js"></script>
<script src="~/Areas/CNCReportes/Scripts/Home/Index.js"></script>

<!-- Mapa -->


<script src="~/Areas/CNCReportes/Scripts/Graficas/Mapas.js"></script>
}
Original

@section scripts{
<!-- AmCharts -->
@*<script src="https://www.amcharts.com/lib/4/core.js"></script>
<script src="https://www.amcharts.com/lib/4/charts.js"></script>
<script src="https://www.amcharts.com/lib/4/themes/animated.js"></script>
<script
src="https://www.amcharts.com/lib/4/plugins/forceDirected.js"></script>*@
<script src="~/Areas/CNCReportes/Scripts/amCharts/core.js"></script>
<script src="~/Areas/CNCReportes/Scripts/amCharts/charts.js"></script>
<script src="~/Areas/CNCReportes/Scripts/amCharts/animated.js"></script>
<script src="~/Areas/CNCReportes/Scripts/amCharts/forceDirected.js"></script>

<!-- AmCharts Mapa-->


@*<script src="https://www.amcharts.com/lib/4/maps.js"></script>*@
<script src="~/Areas/CNCReportes/Scripts/amCharts/maps.js"></script>
<script src="https://www.amcharts.com/lib/4/geodata/mexicoLow.js"></script>
<script src="https://www.amcharts.com/lib/4/geodata/usaLow.js"></script>
@*<script src="~/Areas/CNCReportes/Scripts/amCharts/mexicoLow.js"></script>*@

<!-- Graficas -->


<script src="~/Areas/CNCReportes/Scripts/Graficas/Graficas.js"></script>
<script src="~/Areas/CNCReportes/Scripts/Home/Index.js"></script>

<!-- Mapa -->


<script src="~/Areas/CNCReportes/Scripts/Graficas/Mapas.js"></script>
}
public static class ExtensionMethods
{
/// <summary>
/// A generic extension method that aids in reflecting
/// and retrieving any attribute that is applied to an `Enum`.
/// </summary>
public static TAttribute GetAttribute<TAttribute>(this Enum enumValue)
where TAttribute : Attribute
{
return enumValue.GetType()
.GetMember(enumValue.ToString())
.First()
.GetCustomAttribute<TAttribute>();
}

public static T ToEnum<T>(this string value)


{
return (T)Enum.Parse(typeof(T), value, true);
}
public static string ErrorMsjFormat(this Exception ex)
{
return string.Format("Error. -msj:{0}. -innEx:{1}. -", ex.Message,
ex.InnerException);
}

public static string RemoveDiacritics(this string text)


{
var normalizedString = text.Normalize(NormalizationForm.FormD);
var stringBuilder = new StringBuilder();

foreach (var c in normalizedString)


{
var unicodeCategory = CharUnicodeInfo.GetUnicodeCategory(c);
if (unicodeCategory != UnicodeCategory.NonSpacingMark)
{
stringBuilder.Append(c);
}
}

return stringBuilder.ToString().Normalize(NormalizationForm.FormC);
}

public static string ToCoordinateFormat(this string value)


{
string pattern = string.Empty;

string textTemp = value ?? string.Empty;

//reemplazar todos los carcateres que NO son numeros o punto (.) por
simbolo pipe (|)
String numbersDotAndPipesOnly = Regex.Replace(textTemp.Trim(),
@"[^\d.,]", "|"); //^0-9.

//reemplazar los carcateres coma (,) por punto (.)


numbersDotAndPipesOnly = numbersDotAndPipesOnly.Replace(",", ".");
//reemplazar los cadena (|,) por pipe (|)
numbersDotAndPipesOnly = numbersDotAndPipesOnly.Replace("|,", "|");
numbersDotAndPipesOnly = numbersDotAndPipesOnly.Replace(",|", "|");

//reemplazar los cadena (|.) por pipe (|)


numbersDotAndPipesOnly = numbersDotAndPipesOnly.Replace("|.", "|");
numbersDotAndPipesOnly = numbersDotAndPipesOnly.Replace(".|", "|");

//Se buscan ocurrencias multiples consecuivas de simbolo pipe (||||) y


se sustituyen por un solo carcater pipe (|)
var regex = new Regex("(\\|)\\1+");
String onePipeOnly = regex.Replace(numbersDotAndPipesOnly, "$1"); //
something like! this

//Remover el primer caracter de la cadena si este no es un numero.


onePipeOnly = Regex.Replace(onePipeOnly, @"^([^\d])", "");

var arrCoordinate = onePipeOnly.Split('|');

var grados = (0 < arrCoordinate.Length) ? arrCoordinate[0] : "0";

var minutos = (1 < arrCoordinate.Length) ? arrCoordinate[1] : "0";

if (minutos.IsNumeric())
{
var minutosDouble = Convert.ToDouble(minutos);
minutos = Math.Truncate(minutosDouble).ToString();
}

var segundos = (2 < arrCoordinate.Length) ? arrCoordinate[2] : "0";

if (segundos.IsNumeric())
{
var segundosDouble = Convert.ToDouble(segundos);
//segundos = segundosDouble.ToString("00.00");
segundos = segundosDouble.ToString("F");
}

var coordinateFormat = String.Format("{0}� {1}� {2}�",grados, minutos,


segundos);

return coordinateFormat;

#region Other Code


/*
//Ubica una palabla que empieze por GRA y reemplaza �
textTemp = Regex.Replace(textTemp.ToUpper(), @"GRA\w+\b", "�");
//Ubica una palabla que empieze por MIN y reemplaza '
textTemp = Regex.Replace(textTemp.ToUpper(), @"MIN\w+\b", "'");
//Ubica una palabla que empieze por SEG y reemplaza "
textTemp = Regex.Replace(textTemp.ToUpper(), @"SEG\w+\b", "\"");

//Remueve espacios en Blanco


textTemp = Regex.Replace(textTemp, @"\s+", "");

//Remueve Todo menos lo indicado entre los []


textTemp = Regex.Replace(textTemp, @"[^0-9.,*���'��""�]+", "");

// � � * // ' � � // " � � // �� '' ��


// 97� 27� 47.26�

Regex regEx = null;

//GRADOS
pattern = "[��*]";
regEx = new Regex(pattern);
textTemp = Regex.Replace(regEx.Replace(textTemp, "�"), @"\s+", " ");
var startssg = 0;
int endssg = textTemp.IndexOf("�", startssg);
var gradosSubstr = textTemp.Substring(startssg, endssg - startssg);

//MINUTOS
var index_g = textTemp.IndexOf('�');
var splitTextTemp = index_g != -1 ? textTemp.Split('�')[1] :
string.Empty;

pattern = "['��]";
regEx = new Regex(pattern);
splitTextTemp = Regex.Replace(regEx.Replace(splitTextTemp, "�"),
@"\s+", " ");
//var startssm = textTemp.IndexOf("�") + 1;
var startssm = 0;
int endssm = splitTextTemp.IndexOf("�", startssg);
var minutosSubstr = splitTextTemp.Substring(startssm, endssm -
startssm);

//SEGUNDOS
var index_m = splitTextTemp.IndexOf('�');
splitTextTemp = index_g != -1 ? splitTextTemp.Split('�')[1] :
string.Empty;

pattern = "['��\"��]";
regEx = new Regex(pattern);
splitTextTemp = Regex.Replace(regEx.Replace(splitTextTemp, "�"),
@"\s+", " ");
//var index_s = textTemp.IndexOf('�');
var startsss = 0;
int endsss = splitTextTemp.IndexOf("�", startssg);
var segundosSubstr = splitTextTemp.Substring(startsss, endsss -
startsss);

//var segundos = textTemp.Split('�')[0]


var initStr = "� ";
var startStr = textTemp.IndexOf(initStr) + initStr.Length;
var segundos = textTemp.Substring(startStr, textTemp.IndexOf("�") -
startStr);

if (segundos.IsNumeric())
{
var segundosDouble = Convert.ToDouble(segundos);
segundos = segundosDouble.ToString("0.##");

var splitStr = textTemp.Split('�');


}
*/
#endregion
}

public static string ToCoordinateFormatV2(this string value)


{
string pattern = string.Empty;

string textTemp = value ?? string.Empty;

//reemplazar todos los carcateres que NO son numeros o punto (.) por
simbolo pipe (|)
String numbersDotAndPipesOnly = Regex.Replace(textTemp.Trim(),
@"[^\d]", "|"); //^0-9.

//Se buscan ocurrencias multiples consecuivas de simbolo pipe (||||) y


se sustituyen por un solo carcater pipe (|)
var regex = new Regex("(\\|)\\1+");
String onePipeOnly = regex.Replace(numbersDotAndPipesOnly, "$1"); //
something like! this

//Remover el primer caracter de la cadena si este no es un numero.


onePipeOnly = Regex.Replace(onePipeOnly, @"^([^\d])", "");

//Remover el �ltimo caracter de la cadena si este no es un numero.


onePipeOnly = Regex.Replace(onePipeOnly, @"[^0-9]$", "");

var arrCoordinate = onePipeOnly.Split('|');

var grados = (0 < arrCoordinate.Length) ? arrCoordinate[0] : "0";

if (!grados.IsNumeric())
grados = "0";

//arrCoordinate = arrCoordinate.Where(e => e !=


arrCoordinate[0]).ToArray();

arrCoordinate = arrCoordinate.Where((source, index) => index !=


0).ToArray();

var minutos = (0 < arrCoordinate.Length) ? arrCoordinate[0] : "0";

if (minutos.IsNumeric())
{
var minutosDouble = Convert.ToDouble(minutos);
minutos = Math.Truncate(minutosDouble).ToString();
}
else
{
minutos = "0";
}

//arrCoordinate = arrCoordinate.Where(e => e !=


arrCoordinate[0]).ToArray();
arrCoordinate = arrCoordinate.Where((source, index) => index !=
0).ToArray();

var segundos = String.Join(".", arrCoordinate);


//reemplazar todos los carcateres que NO son numeros o punto (.) por
simbolo pipe (|)
segundos = Regex.Replace(segundos.Trim(), @"[^\d]", "."); //^0-9.

//Se buscan ocurrencias multiples consecuivas de simbolo pipe (||||) y


se sustituyen por un solo carcater pipe (|)
regex = new Regex("(\\.)\\1+");
segundos = regex.Replace(segundos, "$1"); // something like! this

if (segundos.IsNumeric())
{
var segundosDouble = Convert.ToDouble(segundos);
//segundos = segundosDouble.ToString("00.00");
segundos = segundosDouble.ToString("F");
}
else
{
segundos = "0";
}

var coordinateFormat = String.Format("{0}� {1}� {2}�", grados, minutos,


segundos);

return coordinateFormat;

public static DataTable ToDataTable<T>(List<T> items)


{
DataTable dataTable = new DataTable(typeof(T).Name);
//Get all the properties by using reflection
PropertyInfo[] Props = typeof(T).GetProperties(BindingFlags.Public |
BindingFlags.Instance);
foreach (PropertyInfo prop in Props)
{
//Setting column names as Property names
dataTable.Columns.Add(prop.Name);
}
foreach (T item in items)
{
var values = new object[Props.Length];
for (int i = 0; i < Props.Length; i++)
{

values[i] = Props[i].GetValue(item, null);


}
dataTable.Rows.Add(values);
}

return dataTable;
}

public static bool IsNumeric(this string input)


{
double result;
return double.TryParse( input
,System.Globalization.NumberStyles.AllowDecimalPoint

,System.Globalization.NumberFormatInfo.InvariantInfo
,out result);
}

public static T ConvertFromString<T>(this string input)


{
try
{
var converter = TypeDescriptor.GetConverter(typeof(T));
if (converter != null)
{
// Cast ConvertFromString(string text) : object to (T)
return (T)converter.ConvertFromString(input);
}
return default(T);
}
catch (NotSupportedException)
{
return default(T);
}
}

public static IEnumerable<TSource> DistinctBy<TSource, TKey>(this


IEnumerable<TSource> source, Func<TSource, TKey> keySelector)
{
HashSet<TKey> seenKeys = new HashSet<TKey>();
foreach (TSource element in source)
{
if (seenKeys.Add(keySelector(element)))
{
yield return element;
}
}
}

#region Other Code


/*
So to find the distinct values using just the Id property, you could
use:

var query = people.DistinctBy(p => p.Id);

And to use multiple properties, you can use anonymous types, which
implement equality appropriately:

var query = people.DistinctBy(p => new { p.Id, p.Name });


*/

/*

private string CoordenadaFormato(string text)


{
string pattern = string.Empty;
string textTemp = text;

//Remueve espacios en Blanco


textTemp = Regex.Replace(textTemp, @"\s+", "");
//textTemp = Regex.Replace(textTemp, "[^a-zA-Z]", "");

//textTemp = Regex.Replace(textTemp, @"[^0-9a-zA-Z.,���'��""�]+", "");

//Remueve Todo menos lo indicado


textTemp = Regex.Replace(textTemp, @"[^0-9.,*���'��""�]+", "");

// � � * // ' � � // " � � // �� '' ��

//pattern = "[\\~#%&*{}/:<>?|\"-]";

Regex regEx = null;

pattern = "[��*]";
regEx = new Regex(pattern);
textTemp = Regex.Replace(regEx.Replace(textTemp, "�"), @"\s+", " ");

pattern = "['��]";
regEx = new Regex(pattern);
textTemp = Regex.Replace(regEx.Replace(textTemp, "'"), @"\s+", " ");

pattern = "[\"��]";
regEx = new Regex(pattern);
textTemp = Regex.Replace(regEx.Replace(textTemp, "\""), @"\s+", " ");

string source = "$word $another skip $final preserve $end";


string result = Regex.Replace(
source, // scan source
@"\$\w+\b", // starts with $,
contains words symbols
match => match.Value.ToUpper()); //
turn into upper case

//Ubica una palabla que empieze por GRA y reemplaza �


textTemp = Regex.Replace(textTemp.ToUpper(), @"GRA\w+\b", "�");

//Ubica una palabla que empieze por MIN y reemplaza '


textTemp = Regex.Replace(textTemp.ToUpper(), @"MIN\w+\b", "'");

//Ubica una palabla que empieze por SEG y reemplaza "


textTemp = Regex.Replace(textTemp.ToUpper(), @"SEG\w+\b", "\"");

return textTemp;
}

*/
#endregion
}

You might also like