//var myoverlays =[]; //overlays added by my server
var control = '';
var mylayers=[];
var settinglayers=[];
var settings ={};
var iconsar=[];
var LassoObj = {};
var mapopts = {
preferCanvas: true,
// attributionControl: false, //caueses geocode to fail
};
var currentbaselayer = 'Default';//'Hybrid';
var alayers =[];
var map = L.map('map', mapopts).setView([38,-80],10);
map.on('baselayerchange', function (e) {
// console.log(e.layer);
currentbaselayer =e.name;
// console.log(currentbaselayer);
});
map.on('overlayremove', function (e) {
// console.log(e.layer);
// currentbaselayer =e.name;
// console.log(currentbaselayer);
var taindex = alayers.indexOf(e.name);
if (taindex > -1) {
alayers.splice(taindex, 1);
}
// console.log(alayers);
});
map.on('overlayadd', function (e) {
// console.log(e.layer);
alayers.push(e.name);
// console.log(currentbaselayer);
// console.log(alayers);
});
if (maprealm=='agent')
{
leafletapp_geocodesearch();
}
var measureControl = L.control.measure();
measureControl.addTo(map);
//L.simpleMapScreenshoter().addTo(map);
leafletapp_customicons();
leafletapp_externaloverlays();
leafletapp_readsettingsfile();
leafletapp_onmove();
leafletapp_onclick();
leafletapp_menu();
//leafletapp_watermark();
///////////////////////////////////////
//LASSO OPTIONAL INIT IN READ SETTINGS//
///////////////////////////////////////
function LassoEvents() {
//LASSO//
LassoObj.toggleLasso = document.querySelector('#toggleLasso');
LassoObj.contain = document.querySelector('#contain');
LassoObj.intersect = document.querySelector('#intersect');
LassoObj.lassoEnabled = document.querySelector('#lassoEnabled');
LassoObj.lassoResult = document.querySelector('#lassoResult');
map.on('mousedown', () => {
resetSelectedState();
});
map.on('lasso.finished', event => {
setSelectedLayers(event.layers);
// return false;
});
map.on('lasso.enabled', () => {
map.off('click');
LassoObj.lassoEnabled.innerHTML = 'Enabled';
resetSelectedState();
});
map.on('lasso.disabled', () => {
LassoObj.finished = Date.now();
map.on('click',leafletapp_onclickfun);
LassoObj.lassoEnabled.innerHTML = 'Disabled';
//return false;
});
LassoObj.toggleLasso.addEventListener('click', () => {
if (lassoControl.enabled()) {
lassoControl.disable();
} else {
lassoControl.enable();
}
});
contain.addEventListener('change', () => {
lassoControl.setOptions({ intersect: intersect.checked });
});
intersect.addEventListener('change', () => {
lassoControl.setOptions({ intersect: intersect.checked });
});
}
function resetSelectedState() {
map.eachLayer(layer => {
if (layer instanceof L.Marker && !(layer instanceof L.MarkerCluster)) {
layer.setIcon(new L.Icon.Default());
} else if (layer instanceof L.Path) {
layer.setStyle({ color: '#3388ff' });
}
});
LassoObj.lassoResult.innerHTML = '';
}
function setSelectedLayers(layers) {
resetSelectedState();
var Lassoed = {};
Lassoed["Lassoed"] ={};
layers.forEach(layer => {
//console.log(layer.userid);
// var properties = layer.properties;
//console.log(layer);
// Lassoed.push(layer.userid);
Lassoed["Lassoed"][layer.userid]=layer.userid;
if (layer instanceof L.Marker && !(layer instanceof L.MarkerCluster)) {
layer.setIcon(new L.Icon.Default({ className: 'selected '}));
} else if (layer instanceof L.Path) {
layer.setStyle({ color: '#ff4620' });
}
});
LassoObj.lassoResult.innerHTML = layers.length ? `Selected ${layers.length} layers ` : '';
//console.log(Lassoed);
//Lassoed
$.post( "/z/mapdraw?command=leaflet&step=lassoed&skin=ajax", Lassoed).done(function( data ) {
LassoObj.lassoResult.innerHTML = data;
DropDownUrlinit();
console.log('URL ACTIVATED');
});
}
//END LASSO//
function leafletapp_geocodesearch()
{
//only executes for agents
//geocode
var arcgisOnline = L.esri.Geocoding.arcgisOnlineProvider();
//https://services.wvgis.wvu.edu/arcgis/rest/services/Planning_Cadastre/WV_Parcels/MapServer/
var RedOakGeo = L.esri.Geocoding.arcgisOnlineProvider({
url: 'https://www.property4u.com/z/mapdraw?command=geocode&step=redoakgeo&type=p&qin=',
searchFields: ['CountyName'], // Search these fields for text matches
label: 'RED OAK RESULTS', // Group suggestions under this header
maxResults: '15',
formatSuggestion: function(feature){
//console.dir(feature);
//return 'HELLO '+feature.properties.display; // format suggestions like this.
}
});
var corner1 = L.latLng(37.1411, -82.8003),
corner2 = L.latLng(40.6888, -77.6728),
bounds = L.latLngBounds(corner1, corner2);
var searchControl = L.esri.Geocoding.geosearch({
position: 'topright',
providers: [arcgisOnline],
searchBounds :bounds,
}).addTo(map);
var results = L.layerGroup().addTo(map);
searchControl.on('results', function(data){
results.clearLayers();
for (var i = data.results.length - 1; i >= 0; i--) {
results.addLayer(L.marker(data.results[i].latlng));
}
});
if (maprealm=='agent') //agent only searches
{
//causes returns from session execute and is agent retstricted for every execute....
//too much outside traffice and security failures
//listing search
var searchControl2 = L.esri.Geocoding.geosearch({
position: 'topright',
placeholder: 'Search Red Oak',
providers: [RedOakGeo],
searchBounds :bounds,
}).addTo(map);
}
var results2 = L.layerGroup().addTo(map);
searchControl2.on('results', function(data){
results.clearLayers();
for (var i = data.results.length - 1; i >= 0; i--) {
results2.addLayer(L.marker(data.results[i].latlng));
}
});
}
function leafletapp_addlayercontrol()
{
//BASE MAP
//sets the initial active basemap
if(settings.basemap) map.addLayer(mylayers.base[settings.basemap]);
else map.addLayer(mylayers.base.Default);
//called after settings file is read
var overlays ={};
for ( var index in mylayers.overlays ) {
overlays[index]=mylayers.overlays[index];
}
for (var lname in settinglayers.overlays) overlays[lname]=settinglayers.overlays[lname];
var baselayers ={};
for ( var index in mylayers.base ) {
baselayers[index]=mylayers.base[index];
}
//LOAD WITH INTITAL MAP LOAD
if (settings["initoverlays"])
{
for ( var index in settings["initoverlays"] )
{
mylayers.overlays[index].addTo(map);
alayers.push(mylayers.overlays[index].name);
}
}
var collap = true;
if (settings["theoverlays"])
{
for ( var index in settings["theoverlays"] )
{
overlays[settings["theoverlays"][index]].addTo(map);
}
}
else
{
//disply all setting layers on map
var mastgrp = new L.featureGroup();
var mastgrpadded = '';
for (var lname in settinglayers.overlays)
{
settinglayers.overlays[lname].addTo(map);
settinglayers.overlays[lname].addTo(mastgrp);
mastgrpadded = 'true';
overlays[lname]=settinglayers.overlays[lname];
// map.fitBounds(mgroup.getBounds());
//control.addOverlay(group,group.id);
}
}
//VIEW
if(settings.view) map.setView([settings.view.latitude,settings.view.longitude],settings.view.zoom);
else if (settings.masterlayer)
{
// map.fitBounds(settinglayers.overlays[settings.masterlayer].getBounds());
}
else if (mastgrpadded=='true')
{
map.fitBounds(mastgrp.getBounds());
// mastgrp.bringToFront();
}
if(settings.zoom)
{
//alert("HERE "+settings.zoom);
//map.view.zoom = map.setZoom(settings.zoom);
map.setZoom(settings.zoom);
}
//LAYER CONTROL
//control =L.control.activeLayers(baselayers, overlays, {collapsed: collap});
//control.addTo(map);
L.control.layers(baselayers, overlays, {collapsed: collap}).addTo(map);
//scale
L.control.scale().addTo(map);
}
function leafletapp_customicons()
{
iconsar['redoaksign'] = L.icon({
iconUrl: '/objects/mailbox_icon.png',
iconSize: [38, 38], // size of the icon
iconAnchor: [19, 30], // point of the icon which will correspond to marker's location
// popupAnchor: [-3, -76] // point from which the popup should open relative to the iconAnchor
});
iconsar['redoaksign'] = L.icon({
iconUrl: '/objects/maps/googlemapsign.png',
iconSize: [38, 38], // size of the icon
iconAnchor: [19, 19], // point of the icon which will correspond to marker's location
// popupAnchor: [-3, -76] // point from which the popup should open relative to the iconAnchor
});
iconsar['wvumailboxIcon'] = L.icon({
iconUrl: '/objects/mailbox_icon.png',
iconSize: [38, 38], // size of the icon
iconAnchor: [19, 19], // point of the icon which will correspond to marker's location
// popupAnchor: [-3, -76] // point from which the popup should open relative to the iconAnchor
});
//oilandgas
iconsar['activewell'] = L.icon({
iconUrl: '/objects/oilandgas/activewell.png',
iconSize: [12, 12], // size of the icon
iconAnchor: [6, 6], // point of the icon which will
})
iconsar['allother'] = L.icon({
iconUrl: '/objects/oilandgas/allother.png',
iconSize: [24, 24], // size of the icon
iconAnchor: [12, 12], // point of the icon which will
})
iconsar['neverdrilled'] = L.icon({
iconUrl: '/objects/oilandgas/neverdrilled.png',
iconSize: [24, 24], // size of the icon
iconAnchor: [12, 12], // point of the icon which will
})
iconsar['neverissued'] = L.icon({
iconUrl: '/objects/oilandgas/neverissued.png',
iconSize: [24, 24], // size of the icon
iconAnchor: [12, 12], // point of the icon which will
})
iconsar['permitapplication'] = L.icon({
iconUrl: '/objects/oilandgas/permitapplication.png',
iconSize: [24, 24], // size of the icon
iconAnchor: [12, 12], // point of the icon which will
})
iconsar['permitissued'] = L.icon({
iconUrl: '/objects/oilandgas/permitissued.png',
iconSize: [24, 24], // size of the icon
iconAnchor: [12, 12], // point of the icon which will
})
iconsar['plugged'] = L.icon({
iconUrl: '/objects/oilandgas/plugged.png',
iconSize: [24, 24], // size of the icon
iconAnchor: [12, 12], // point of the icon which will
})
}
function leafletapp_onmove()
{
if (maprealm=='agent')
{
map.on('move', function(e) {
if (gmapready)
{
var latitude = map.getCenter().lat;
var longitude = map.getCenter().lng;
var zoom = map.getZoom()
gmapsetbounds(latitude,longitude,zoom);
}
});
}
}
function leafletapp_menu()
{
//menu
var murl="/z/mapdraw?command=leaflet&step=menu&skin=ajax";
if (mapid) murl+="&mapid="+mapid;
if (maprealm) murl+="&maprealm="+maprealm;
$.get(murl).done(function(mdata) {
// alert(mdata);
L.control.slideMenu(mdata,{position: 'bottomright',menuposition: 'bottomright'}).addTo(map);
});
//https://github.com/domoritz/leaflet-locatecontrol
L.control.locate(
{
setView: 'untilPanOrZoom',
keepCurrentZoomLevel: true
}).addTo(map);
map.addControl(new L.Control.Fullscreen());
}
function leafletapp_onclick()
{
if (maprealm=='agent')
{
map.on('click',
leafletapp_onclickfun);
/*
//on click function
map.on('click', function(e){
leafletapp_onclickfun(e);
});
*/
}
}
function leafletapp_onclickfun(e)
{
var now = Date.now();
if ((now-LassoObj.finished)<3000)
{
return false;
}
//lassoEnabled
/*
if (lassoControl.enabled()) {
console.log("lasso enabled");
return false; }
else { console.log("lasso not enabled");}
*/
var theoverlays ={};
for (i = 0; i < alayers.length; i++) {
theoverlays[i]=alayers[i];
}
var latlng = e.latlng;
var popup = L.popup()
.setLatLng(latlng)
.setContent('loading')
.openOn(map);
//, , ,
//map.getBounds().getEast() - ;
// var height = map.getBounds().getNorth() - map.getBounds().getSouth();
var url="/z/mapdraw?command=leaflet&step=query&skin=ajax&latlan="+latlng.toString();
if(settings.querykey) {
url+="&key="+settings.querykey;
}
url+="&overlays="+JSON.stringify(theoverlays);
url+="&maprealm="+maprealm;
url+="&bounds="+map.getBounds().getWest()+","+map.getBounds().getSouth()+","+map.getBounds().getEast()+","+map.getBounds().getNorth();
$.get(url).done(function(data) {
popup.setContent(data);
popup.update();
});
}
function leafletapp_readsettingsfile()
{
if (readsettings!='true')
{
//alert("NOT READONG SETTINGS FILE");
leafletapp_addlayercontrol();
return; //I guess its possible
}
//DYNAMIC OVERLAYS
// $.getJSON("/temp60/"+mapid+"_settings.json", function(settingsread)
///z/doc?command=view&allfile=true&file=".$qq['filename']
$.getJSON("/z/doc?command=view&allfile=true&file={tempdirs}/60daytemp/"+mapid+"_settings.json", function(settingsread)
{
settings = settingsread;
settinglayers["overlays"]=[];
if (settings.leafletplugin) {
if (settings.leafletplugin['lasso']) {
const lassoControl = L.control.lasso().addTo(map);
//L.control.lasso().addTo(map);
//LASSO//
$( document ).ready(function() {
LassoEvents();
});
}
}
if(settings.markers) {
//alert("HERE");
var mOpt = [];
for (mlname in settings.markers)
{
//var mgroup = new L.featureGroup(); //each mlname (layer name has a group)
if (settings.nocluster) var mgroup = new L.featureGroup();
else var mgroup = L.markerClusterGroup();
for (id in settings.markers[mlname])
{
if (settings.markers[mlname][id].icon)
{
// if(!urlpattern.test(str)) {
var iconurl=settings.markers[mlname][id].icon;
//} else {
// var iconurl="/objects/logos/googlemapsign.png";
// }
var mIcon = L.icon({
iconUrl: iconurl,
iconSize: [38, 38], // size of the icon
iconAnchor: [19, 19], // point of the icon which will correspond to marker's location
// popupAnchor: [-3, -76] // point from which the popup should open relative to the iconAnchor
});
mOpt['icon']=mIcon;
}
if(settings.markers[mlname][id].numberlabel)
{
mOpt['icon']= new L.AwesomeNumberMarkers({
number: settings.markers[mlname][id].numberlabel,
markerColor: "blue"
});
}
/*
if (settings.markers[mlname][id].numberlabel)
{
mOpt['icon']= new L.NumberedDivIcon({number: settings.markers[mlname][id].numberlabel})
}
*/
if (settings.markers[mlname][id].draggable)
{
mOpt['draggable']=settings.markers[mlname][id].draggable;
}
//alert(id+" "+settings.markers[mlname][id]['lat']+" "+settings.markers[mlname][id]['lon']);
var marker =L.marker([settings.markers[mlname][id]['lat'], settings.markers[mlname][id]['lon']],mOpt);
if (settings.markers[mlname][id].draggable)
{
marker.on('dragend', function (e) {
document.getElementById("latlonlocation").value=marker.getLatLng().lat+","+marker.getLatLng().lng;
});
}
if (settings.markers[mlname][id].bindpopup)
{
marker.bindPopup(settings.markers[mlname][id].bindpopup);
}
marker.userid = id;
marker.username = mlname;
marker.addTo(mgroup);
}
settinglayers.overlays[mlname]=mgroup;
}
}
///////////////////////////////
///////LAYER GROUPS////////////
///////////////////////////////
var group = new L.featureGroup();
group.on('layeradd', function() {
if(!settings.view) map.fitBounds(group.getBounds());
//L.control.layers.addOverlay(imageOverlayNew, newLayerName);
});
/*
var bckgroup = new L.featureGroup();
bckgroup.on('layeradd', function() {
bckgroup.bringToBack();
});
*/
if(settings.layers.geojson) {
for (i in settings.layers.geojson)
{
/*
$.ajax({
type: "POST",
url: settings.layers.geojson[i]['url'],
dataType: 'json',
success: function (response) {
geojsonLayer = L.geoJson(response, {
style: yourLeafletStyle
}).addTo(map);
}
});
*/
// var geojsonLayer = new L.GeoJSON.AJAX(settings.layers.geojson[i]['url']);
// geojsonLayer.addTo(map);
var geojsonLayer = new L.GeoJSON.AJAX(settings.layers.geojson[i]['url'],
{onEachFeature: leafletapp_onEachFeature}
);
/*
,{
onEachFeature: function (feature, layer) {
if (feature.properties.popup)
{
layer.bindPopup(feature.properties.popup);
}
layer.setStyle(feature.style);
geojsonLayer.addData(layer);
}
}
*/
geojsonLayer.on('data:loaded',function(e)
{
// onEachFeature: leafletapp_onEachFeature,
geojsonLayer.addTo(map).bringToBack();
});
settinglayers.overlays[settings.layers.geojson[i]['id']]=geojsonLayer;
} //ends for loop
}
if(settings.layers.gpxfiles) {
for (i in settings.layers.gpxfiles)
{
var gpx = settings.layers.gpxfiles[i]['url']; // URL to your GPX file or the GPX itself
new L.GPX(gpx, {
async: true,
marker_options: {
wptIconUrls: {
'': '/objects/info.png'
},
iconSize: [20, 20],
iconAnchor: [10, 10],
startIconUrl: '',
endIconUrl: '',
shadowUrl: ''
}
}).on('loaded', function(e) {
map.fitBounds(e.target.getBounds());
}).addTo(map);
}
}
//layer ids //https://stackoverflow.com/questions/34322864/finding-a-specific-layer-in-a-leaflet-layergroup-where-layers-are-polygons
if(settings.layers.kmlfiles) {
var track = [];
var cnt = 0;
var trkcolor= '#FF0000';//#FF0000';
for (i in settings.layers.kmlfiles)
{
//alert(i+' '+settings.layers.kmlfiles[i]['url']);
//alert();
// if (i==0) continue;
// var track[i] new Object();
// alert(settings.layers.kmlfiles[i]['url']);
track[i] = new L.KML(settings.layers.kmlfiles[i]['url'], {async: true});
track[i].on('loaded', function(e) {
++cnt;
if (cnt >= settings.layers.kmlfiles.length) {
// all images loaded here
// alert('loade');
for (ii in settings.layers.kmlfiles)
{
//alert(ii);
if (settings.layers.kmlfiles[ii]['color'])
{
trkcolor = settings.layers.kmlfiles[ii]['color'];
}
track[ii].setStyle({color: trkcolor,fill:false,weight:4,bubblingMouseEvents:false});
if (settings.layers.kmlfiles[ii]['id'])
{
track[ii].id=settings.layers.kmlfiles[ii]['id'];
//alert(track[ii].id);
}
// var str= new JSON.stringify(track[ii]);
//alert(str);
//track[ii].bindPopup(JSON.stringify(track[ii]));
//var feature = track[ii].toGeoJSON();
//alert(JSON.stringify(feature));
//alert(feature.name);
// alert(track[ii].getBounds());
group.addLayer(track[ii]);
// L.control.layers
// L.control.addOverlay(track[ii],"blah");
if (settings.layers.kmlfiles[ii]['overlayname']) track[ii].id=settings.layers.kmlfiles[i]['overlayname'];
else track[ii].id="kml_"+ii;
//add to active layer array for requesting
alayers.push(track[ii].id);
//add click
if (maprealm=='agent')
{
track[ii].on('click', function(event) { leafletapp_onclickfun(event);});
}
settinglayers.overlays[track[ii].id]=track[ii];
//control.addOverlay(track[ii],track[ii].id);
//track[ii].addTo(map);
}
leafletapp_addlayercontrol(); //wait till kml files are loaded if there are some
} else {
// still more images to load
// alert('loading');
}
});
}
}
else
{
// alert('no knl files');
leafletapp_addlayercontrol(); // no KML go ahead
}
// if(settings.view) map.setView([settings.view.lat,settings.view.lon],settings.view.zoom);
//WATER MARK///
L.Control.Watermark = L.Control.extend({
onAdd: function(map) {
var img = L.DomUtil.create('img');
if (settings.watermark)//watermark
{
img.src = settings.watermark;
}
else
{
img.src = '/objects/maps/mapwatermarkredoak.png';
}
img.style.width = '50px';
return img;
},
onRemove: function(map) {
// Nothing to do here
}
});
L.control.watermark = function(opts) {
return new L.Control.Watermark(opts);
}
L.control.watermark({ position: 'bottomleft' }).addTo(map);
});
}
function leafletapp_onEachFeature(feature, layer) {
// does this feature have a property named popupContent?
if (feature.properties && feature.properties.popup) {
layer.bindPopup(feature.properties.popup);
}
//alert('here');
var st = {
"color": "#ff7800",
"weight": 5,
"opacity": 0.65
};
//console.log(typeof st);
// console.log(typeof feature.style);
// console.log(feature.style);
//layer.setStyle(st);
if(feature.hasOwnProperty('style')) {
// console.log(feature);
//console.log(feature.style);
layer.setStyle(feature.style);
}
//layer.setStyle();
//layer.setStyle({bubblingMouseEvents: false,color: "#FDFEFE",fill: false,weight: "4"});
// layer.setStyle({color :'red'})
}
function leafletapp_externaloverlays($q)
{
//BASE MAPS
//var mylayers.base=[];
//var mylayers.overlays=[];
mylayers["base"]=[];
mylayers["base"]['RoadMap']=L.gridLayer.googleMutant({
maxZoom: 24,
type:'roadmap',
//streetViewControl: true,
});
mylayers["base"]["Satelite"] = L.gridLayer.googleMutant({
maxZoom: 24,
type:'satellite',
// streetViewControl: true,
});
mylayers["base"]["Hybrid"] = L.gridLayer.googleMutant({
maxZoom: 24,
type:'hybrid',
// streetViewControl: true,
});
//https://client.stadiamaps.com/dashboard/#/property/41494/
mylayers["base"]["Default"] = L.gridLayer.googleMutant({
maxZoom: 24,
type:'hybrid',
// streetViewControl: true,
});
/*
= L.tileLayer('https://tiles.stadiamaps.com/tiles/alidade_satellite/{z}/{x}/{y}{r}.{ext}', {
minZoom: 0,
maxZoom: 20,
attribution: '© CNES, Distribution Airbus DS, © Airbus DS, © PlanetObserver (Contains Copernicus Data) | © Stadia Maps © OpenMapTiles © OpenStreetMap contributors',
ext: 'jpg'
});
*/
//
/*
mylayers["base"]["Topo1"] =L.esri.tiledMapLayer({
maxZoom: 24,
url: "https://basemap.nationalmap.gov/arcgis/rest/services/USGSTopo/MapServer"
});
*/
mylayers["base"]["Topo"] =L.esri.tiledMapLayer({
maxZoom: 24,
maxNativeZoom: 16,
url: "https://services.arcgisonline.com/ArcGIS/rest/services/USA_Topo_Maps/MapServer"
});
mylayers["base"]["TopoAlt"] =L.esri.tiledMapLayer({
maxZoom: 24,
maxNativeZoom: 16,
url: "https://basemap.nationalmap.gov/arcgis/rest/services/USGSTopo/MapServer"
});
mylayers["base"]["ShadedHillside"] =L.esri.tiledMapLayer({
maxZoom: 24,
url: "https://tagis.dep.wv.gov/arcgis/rest/services/webMercator/WVhillshade_wm/MapServer"
});
if (maprealm=='agent')
{
mylayers["base"]["Leafless (slow)"] =L.esri.dynamicMapLayer({
url: "https://services.wvgis.wvu.edu/arcgis/rest/services/Imagery_BaseMaps_EarthCover/wv_imagery_WVGISTC_leaf_off_mosaic/MapServer",
//f: 'image',
//format: 'png24',
});
/*
mylayers["base"]["Leafless"] =L.esri.dynamicMapLayer({
url: "https://services.wvgis.wvu.edu/arcgis/rest/services/ImageryBaseMaps/wv_aerial_photos_mixed_resolutions_wm/MapServer"
});
mylayers["base"]["Samb"] =L.esri.dynamicMapLayer({
url: "https://services.wvgis.wvu.edu/arcgis/rest/services/ImageryBaseMaps/wv_aerial_photos_SAMB_2003_2ft_wm/MapServer"
});
*/
}
//https://services.wvgis.wvu.edu/arcgis/rest/services/Applications/floodTool_publicView/MapServer
mylayers["overlays"]=[];
mylayers.overlays["FloodPUB"] = L.esri.dynamicMapLayer({
url: 'https://services.wvgis.wvu.edu/arcgis/rest/services/Hazards/floodTool_publicView/MapServer',
layers: [1],
f: 'image',
format: 'png24',
opacity: 0.4,
});
//https://services.wvgis.wvu.edu/arcgis/rest/services/Applications/floodTool_expertView/MapServer/4
mylayers.overlays["FloodEX"] = L.esri.dynamicMapLayer({
url: 'https://services.wvgis.wvu.edu/arcgis/rest/services/Hazards/floodTool_expertView/MapServer',
layers: [4],
f: 'image',
format: 'png24',
opacity: 0.7,
});
//https://services.wvgis.wvu.edu/arcgis/rest/services/Planning_Cadastre/WV_Parcels_Appsrv_2018/MapServer
//removed 022419
mylayers.overlays["TaxMaps"] = L.esri.dynamicMapLayer({
url: "https://services.wvgis.wvu.edu/arcgis/rest/services/Planning_Cadastre/WV_Parcels/MapServer",
layers: [0,1],
f: 'image',
format: 'svg',
opacity: 1
});
mylayers.overlays["ForestandParks"] = L.esri.dynamicMapLayer({
url: "https://services.wvgis.wvu.edu/arcgis/rest/services/Boundaries/wv_protected_lands/MapServer",
layers: [0,3,7],
f: 'image',
format: 'svg',
opacity: .5
});
//layers: [7],
mylayers.overlays["Trails"] = L.esri.dynamicMapLayer({
url: "https://services.wvgis.wvu.edu/arcgis/rest/services/Applications/trails_trailService/MapServer/",
layers: [0,1,2,3,4,5,6,7],
f: 'image',
format: 'png',
opacity: .8
});
//https://services.wvgis.wvu.edu/arcgis/rest/services/Boundaries/wv_political_boundary/MapServer
mylayers.overlays["City Bounds"] =L.esri.dynamicMapLayer({
url: "https://services.wvgis.wvu.edu/arcgis/rest/services/Boundaries/wv_political_boundary/MapServer",
layers: [1],
f: 'image',
format: 'png',
opacity: .4
});
mylayers.overlays["Counties"] =L.esri.dynamicMapLayer({
url: "https://services.wvgis.wvu.edu/arcgis/rest/services/Boundaries/wv_political_boundary/MapServer",
layers: [0],
f: 'image',
format: 'png',
opacity: .6
});
//https://services.wvgis.wvu.edu/arcgis/rest/services/Applications/wv_reference_roads_streams_placeNames/MapServer
//https://gis.transportation.wv.gov/arcgis/rest/services/Base_Maps/WVDOT_Base_Map_UTM/MapServer
//https://gis.transportation.wv.gov/arcgis/rest/services/Base_Maps/RoadCache/MapServer //quit working?
/*
* maxZoom: 24,
maxNativeZoom: 14,
url: "https://gis.transportation.wv.gov/arcgis/rest/services/Base_Maps/WVDOT_Base_Map_UTM/MapServer"
*/
/*
mylayers.overlays["WVDOT"] =L.esri.tiledMapLayer({
url: "https://services.wvgis.wvu.edu/arcgis/rest/services/Applications/wv_reference_roads_streams_placeNames/MapServer"
});
*/
mylayers.overlays["WVDOT"] =L.esri.dynamicMapLayer({
url: "https://gis.transportation.wv.gov/arcgis/rest/services/Base_Maps/WVDOT_Base_Map_WM/MapServer",
f: 'image',
format: 'png',
opacity: .8
});
mylayers.overlays["WVDOTown"] =L.esri.dynamicMapLayer({
url: "https://gis.transportation.wv.gov/arcgis/rest/services/Roads_And_Highways/Publication_LRS/MapServer",
layers: [39],
f: 'image',
format: 'png'
});
mylayers.overlays["CELL SERVICE"] =L.esri.tiledMapLayer({
url: "https://atlas.wvgs.wvnet.edu/arcgis/rest/services/WestVirginiaBroadbandOnlineV10/WvTechnologyGroupD/MapServer",
opacity: .6
});
// https://atlas.wvgs.wvnet.edu/arcgis/rest/services/WestVirginiaBroadbandOnlineV10/WvTechnologyGroupD/MapServer/tile/13/3148/2273
/*
mylayers.overlays["INTERNET"] =L.esri.tiledMapLayer({
url: "https://atlas.wvgs.wvnet.edu/arcgis/rest/services/WestVirginiaBroadbandOnlineV10/WestVirginiaBroadbandMap/MapServer"
});
*/
mylayers.overlays["INTERNET"] = L.esri.dynamicMapLayer({
url: "https://atlas.wvgs.wvnet.edu/arcgis/rest/services/WestVirginiaBroadbandOnlineV10/WestVirginiaBroadbandMap/MapServer/",
layers: [0,1,2,3,6],
f: 'image',
format: 'png',
opacity: .8
});
/*
mylayers.overlays["BROKEN"] = L.esri.dynamicMapLayer({
url: "https://services.wvgis.wvu.edu/arcgis/rest/services/Test/Delinquent_Properties/MapServer/",
layers: [0],
f: 'image',
format: 'png',
opacity: .8
});
*/
//https://atlas.wvgs.wvnet.edu/arcgis/rest/services/WestVirginiaBroadbandOnlineV10/WestVirginiaBroadbandMap/MapServer/export?dpi=96&transparent=true&format=png8&layers=show%3A5&bbox=-8890219.307347577%2C4634977.6505620135%2C-8888690.566782001%2C4635777.850701806&bboxSR=102100&imageSR=102100&size=1280%2C670&f=image
/*
mylayers.overlays["PoliticalBoundaries"] = L.esri.dynamicMapLayer({
url: "https://services.wvgis.wvu.edu/arcgis/rest/services/Boundaries/wv_political_bdry_wm/MapServer/",
layers: [4],
f: 'image',
format: 'svg',
opacity: 1
});
*/
/*
mylayers.overlays["1ftTopo"] = L.esri.featureLayer({
url: 'https://services.wvgis.wvu.edu/arcgis/rest/services/Elevation/wv_contour_1ft/MapServer/16',
})
*/
/* //cant get tiles to work even on their test site
mylayers.overlays["1ftTopo tile"] =L.esri.tiledMapLayer({
url: "https://services.wvgis.wvu.edu/arcgis/rest/services/Elevation/wv_contour_1ft/MapServer/16",
useCors: true,
opacity: .6
});
*/
/*
mylayers.overlays["Geology"] = L.esri.featureLayer({
url: 'https://services.wvgis.wvu.edu/arcgis/rest/services/Geoscientific_Information/WV_Geology/MapServer/0',
})
*/
/*
mylayers.overlays["1ftTopo dyn"] = L.esri.dynamicMapLayer({
url: "https://services.wvgis.wvu.edu/arcgis/rest/services/Elevation/wv_contour_1ft/MapServer",
layers: [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23],
f: 'image',
format: 'svg',
opacity: 1
});
*/
/*
mylayers.overlays["gnis"] = L.esri.dynamicMapLayer({
url: "https://services.wvgis.wvu.edu/arcgis/rest/services/Location/wv_GNIS/MapServer",
layers: [0],
f: 'image',
format: 'svg',
opacity: 1
});
*/
/*
mylayers.overlays["Geology"] = L.esri.dynamicMapLayer({
url: "https://services.wvgis.wvu.edu/arcgis/rest/services/Geoscientific_Information/WV_Geology/MapServer",
layers: [0,1,2,3,4,5],
f: 'image',
format: 'svg',
opacity: 1
});
mylayers.overlays["Geologytiled"] =L.esri.tiledMapLayer({
url: "https://services.wvgis.wvu.edu/arcgis/rest/services/Geoscientific_Information/WV_Geology/MapServer/0",
opacity: .6,
useCors: true,
});
mylayers.overlays["Geologyfeature"] = L.esri.featureLayer({
url: 'https://services.wvgis.wvu.edu/arcgis/rest/services/Geoscientific_Information/WV_Geology/MapServer/0',
f: 'image',
format: 'svg',
opacity: 1
});
*/
mylayers.overlays["1ftTopo"] =L.esri.dynamicMapLayer({
url: "https://services.wvgis.wvu.edu/arcgis/rest/services/Elevation/wv_contour_1ft/MapServer",
useCors: true,
});
mylayers.overlays["Water"] = L.esri.dynamicMapLayer({
url: "https://services.wvgis.wvu.edu/arcgis/rest/services/Utilities_Communication/WV_WaterSewer_WVWDA/MapServer",
layers: [0,2,4],
f: 'image',
format: 'png',
opacity: .6,
useCors: false,
});
mylayers.overlays["Sewer"] = L.esri.dynamicMapLayer({
url: "https://services.wvgis.wvu.edu/arcgis/rest/services/Utilities_Communication/WV_WaterSewer_WVWDA/MapServer",
layers: [1,3,5],
f: 'image',
format: 'png',
opacity: .6,
useCors: false,
});
//https://services.wvgis.wvu.edu/arcgis/rest/services/Planning_Cadastre/WV_Parcels/MapServer/11/query
//https://services.wvgis.wvu.edu/arcgis/rest/services/Geocode/WV_Site/GeocodeServer
//$info['fulladdr']." ".$info['municipality']." ".$info['state']." ".$info['zip']
/*
mylayers.overlays["Addresses"] = L.esri.featureLayer({
url: 'https://wvsams.mapwv.org/arcgis/rest/services/SAMS/SAMSII_View/MapServer/3',
// fields: 'fulladdr,municipality,State,Zip',
minZoom: 16,
pointToLayer: function (geojson, latlng) {
//make address
var addresspopup =geojson.properties.FULLADDR+"
"+geojson.properties.MUNICIPALITY+", "+geojson.properties.State+" "+geojson.properties.Zip;
return L.marker(latlng, {
icon: iconsar['wvumailboxIcon']
}).bindPopup(addresspopup);
}
});
*/
mylayers.overlays["Addresses"] = L.esri.featureLayer({
url: 'https://services.wvgis.wvu.edu/arcgis/rest/services/Planning_Cadastre/WV_Parcels/MapServer/5',
// fields: 'fulladdr,municipality,State,Zip',
minZoom: 16,
pointToLayer: function (geojson, latlng) {
//make address
var addresspopup =geojson.properties.FULLADDR+"
"+geojson.properties.MUNICIPALITY+", "+geojson.properties.State+" "+geojson.properties.Zip;
addresspopup+='
Google';
return L.marker(latlng, {
icon: iconsar['wvumailboxIcon']
}).bindPopup(addresspopup);
}
});
//alayers
/*
mylayers.overlays["OilAndGasWells"] = L.esri.dynamicMapLayer({
url: "https://tagis.dep.wv.gov/arcgis/rest/services/app_services/oog2/MapServer",
layers: [0,1,2,3,4],
f: 'image',
format: 'PNG',
opacity: 1,
useCors: false
});
*/
//Eagle_A_WM //Eagle_WM
mylayers.overlays["Coal Eagle A"] = L.esri.dynamicMapLayer({
url: "https://atlas.wvgs.wvnet.edu/arcgis/rest/services/Coal_Web_Mercator/Eagle_A_WM/MapServer",
layers: [0,1,2,3,4,5],
f: 'image',
format: 'png',
opacity: .4
});
mylayers.overlays["Coal Eagle"] = L.esri.dynamicMapLayer({
url: "https://atlas.wvgs.wvnet.edu/arcgis/rest/services/Coal_Web_Mercator/Eagle_WM/MapServer",
layers: [0,1,2,3,4,5],
f: 'image',
format: 'png',
opacity: .4
});
mylayers.overlays["Coal Low Pow"] = L.esri.dynamicMapLayer({
url: "https://atlas.wvgs.wvnet.edu/arcgis/rest/services/Coal_Web_Mercator/Lower_Powellton_WM/MapServer",
layers: [0,1,2,3,4,5],
f: 'image',
format: 'png',
opacity: .4
});
mylayers.overlays["Coal Low War Eag"] = L.esri.dynamicMapLayer({
url: "https://atlas.wvgs.wvnet.edu/arcgis/rest/services/Coal_Web_Mercator/Lower_War_Eagle_WM/MapServer",
layers: [0,1,2,3,4,5],
f: 'image',
format: 'png',
opacity: .4
});
mylayers.overlays["Coal Pow"] = L.esri.dynamicMapLayer({
url: "https://atlas.wvgs.wvnet.edu/arcgis/rest/services/Coal_Web_Mercator/Powellton_WM/MapServer",
layers: [0,1,2,3,4,5],
f: 'image',
format: 'png',
opacity: .4
});
mylayers.overlays["Coal Eagle Low"] = L.esri.dynamicMapLayer({
url: "https://atlas.wvgs.wvnet.edu/arcgis/rest/services/Coal_Web_Mercator/Eagle_Lower_Split_1_WM/MapServer",
layers: [0,1,2,3,4,5],
f: 'image',
format: 'png',
opacity: .4
});
mylayers.overlays["Coal lit eagle"] = L.esri.dynamicMapLayer({
url: "https://atlas.wvgs.wvnet.edu/arcgis/rest/services/Coal_Web_Mercator/Little_Eagle_WM/MapServer",
layers: [0,1,2,3,4,5],
f: 'image',
format: 'png',
opacity: .4
});
mylayers.overlays["Coal war eagle"] = L.esri.dynamicMapLayer({
url: "https://atlas.wvgs.wvnet.edu/arcgis/rest/services/Coal_Web_Mercator/Middle_War_Eagle_WM/MapServer",
layers: [0,1,2,3,4,5],
f: 'image',
format: 'png',
opacity: .4
});
mylayers.overlays["Coal Geln Tunn"] = L.esri.dynamicMapLayer({
url: "https://atlas.wvgs.wvnet.edu/arcgis/rest/services/Coal_Web_Mercator/Glenalum_Tunnel_WM/MapServer",
layers: [0,1,2,3,4,5],
f: 'image',
format: 'png',
opacity: .4
});
mylayers.overlays["Coal Peerless"] = L.esri.dynamicMapLayer({
url: "https://atlas.wvgs.wvnet.edu/arcgis/rest/services/Coal_Web_Mercator/Peerless_WM/MapServer",
layers: [0,1,2,3,4,5],
f: 'image',
format: 'png',
opacity: .4
});
//Eagle_A_WM
//Eagle_WM
//Lower_Powellton_WM
//Lower_War_Eagle_WM
//Powellton_WM
//Eagle_Lower_Split_1_WM
//Little_Eagle_WM
//Middle_War_Eagle_WM
//Glenalum_Tunnel_WM
//Peerless_WM
//https://atlas2.wvgs.wvnet.edu/server/rest/services/OilGas_WVOG/WVOG/MapServer/
mylayers.overlays["OilAndGasWells"] = L.esri.featureLayer({
url: 'https://tagis.dep.wv.gov/arcgis/rest/services/app_services/oog2/MapServer/7',
// fields: 'fulladdr,municipality,State,Zip',
useCors: false,
minZoom: 12,
pointToLayer: function (geojson, latlng) {
//make address
/*
var addresspopup =
'API:
'
+geojson.properties.RespParty+"
"
+geojson.properties.WellType+"
"
+geojson.properties.WellDepth+"
"
+"Fromation: "+geojson.properties.Formation+"
"
+"Status: "+geojson.properties.WellStatus;
*/
var addresspopup =
'API: '+geojson.properties.api+"
"
+geojson.properties.RespParty+"
"
+geojson.properties.WellType+"
"
+geojson.properties.WellDepth+"
"
+"Fromation: "+geojson.properties.Formation+"
"
+"Status: "+geojson.properties.WellStatus;
// var addresspopup ="data";
/*
'PermitID' => '083-01066',
'County' => '083',
'Permit' => '01066',
'api' => '4708301066',
'WellType' => 'Vertical',
'WellUse' => 'Not Available',
'WellDepth' => 'Deep',
'WellRig' => 'Not Available',
'PermitType' => 'Plugging',
'IssueDate' => '1987/07/17',
'CompDate' => NULL,
'RespParty' => 'EQT PRODUCTION COMPANY',
'WellStatus' => 'Plugged',
'FarmName' => 'MOWER LTD. PARTNERSHIP',
'WellNumber' => '2535-5A',
'RecDate' => NULL,
'Marcellus' => 'u',
'Formation' => 'NA',
*/
var ico = "allother";
if (geojson.properties.WellStatus=='Never Drilled') ico = "neverdrilled";
if (geojson.properties.WellStatus=='Active Well') ico = "activewell";
if (geojson.properties.WellStatus=='Plugged') ico = "plugged";
// if (geojson.properties.WellStatus=='Abandoned Well') ico = "allother";
var thismarker= L.marker(latlng, {
icon: iconsar[ico]
});
// thismarker.bindTooltip(addresspopup);
var popup = L.popup();
popup.setContent(addresspopup);
thismarker.bindPopup(popup);
return thismarker;
}
});
//https://tagis.dep.wv.gov/arcgis/rest/services/WVDEP_enterprise/oil_gas/MapServer/identify?f=json&returnFieldName=true&returnGeometry=true&returnUnformattedValues=true&returnZ=false&tolerance=12&imageDisplay=520%2C403%2C96&geometry=%7B%22x%22%3A-8957836.670356916%2C%22y%22%3A4753723.865242845%7D&geometryType=esriGeometryPoint&sr=102100&mapExtent=-8966684.256380916%2C4751698.283993291%2C-8956747.442703854%2C4759208.222022299&layers=visible%3A7
//show:0,1,2,3,4,5,6,8,9
//https://atlas2.wvgs.wvnet.edu/server/rest/services/OilGas_WVOG/WVOG/MapServer/
mylayers.overlays["DEP OG"] = L.esri.dynamicMapLayer({
url: 'https://tagis.dep.wv.gov/arcgis/rest/services/app_services/oog2/MapServer/',
// fields: 'fulladdr,municipality,State,Zip',
layers: [0,1,2,3,4,5,6,8,9],
useCors: false,
minZoom: 12,
});
mylayers.overlays["DLC"] = L.esri.dynamicMapLayer({
url: "https://services.wvgis.wvu.edu/arcgis/rest/services/Planning_Cadastre/Delinquent_Properties/MapServer",
layers: [0,1],
f: 'image',
format: 'svg',
opacity: .4
});
//var dbasel=mylayers.base.Hybrid;
//alert(dbasel);
}
//rotate marker
(function() {
// save these original methods before they are overwritten
var proto_initIcon = L.Marker.prototype._initIcon;
var proto_setPos = L.Marker.prototype._setPos;
var oldIE = (L.DomUtil.TRANSFORM === 'msTransform');
L.Marker.addInitHook(function () {
var iconOptions = this.options.icon && this.options.icon.options;
var iconAnchor = iconOptions && this.options.icon.options.iconAnchor;
if (iconAnchor) {
iconAnchor = (iconAnchor[0] + 'px ' + iconAnchor[1] + 'px');
}
this.options.rotationOrigin = this.options.rotationOrigin || iconAnchor || 'center bottom' ;
this.options.rotationAngle = this.options.rotationAngle || 0;
// Ensure marker keeps rotated during dragging
this.on('drag', function(e) { e.target._applyRotation(); });
});
L.Marker.include({
_initIcon: function() {
proto_initIcon.call(this);
},
_setPos: function (pos) {
proto_setPos.call(this, pos);
this._applyRotation();
},
_applyRotation: function () {
if(this.options.rotationAngle) {
this._icon.style[L.DomUtil.TRANSFORM+'Origin'] = this.options.rotationOrigin;
if(oldIE) {
// for IE 9, use the 2D rotation
this._icon.style[L.DomUtil.TRANSFORM] = 'rotate(' + this.options.rotationAngle + 'deg)';
} else {
// for modern browsers, prefer the 3D accelerated version
this._icon.style[L.DomUtil.TRANSFORM] += ' rotateZ(' + this.options.rotationAngle + 'deg)';
}
}
},
setRotationAngle: function(angle) {
this.options.rotationAngle = angle;
this.update();
return this;
},
setRotationOrigin: function(origin) {
this.options.rotationOrigin = origin;
this.update();
return this;
}
});
})();
//end rotate
function exportmap(event)
{
// alert('v3');
event.preventDefault();
var currentmap = {};
currentmap.leaflet={};
currentmap.mapid=mapid;
currentmap.leaflet.basemap=currentbaselayer; //control.getActiveBaseLayer().name; //depends on avtive layers plugin
// var alayers = control.getActiveOverlayLayers(); //set by action
// alert(JSON.stringify(alayers, censor(alayers)));
//currentmap.theoverlays=JSON.stringify(alayers);
currentmap.leaflet.theoverlays ={};
for (i = 0; i < alayers.length; i++) {
currentmap.leaflet.theoverlays[i]=alayers[i];
}
/*
$.each(alayers, function( index, value ) {
//alert( value.toGeoJSON());
//currentmap.layers.index=value.toGeoJSON();
alert( index+" "+value.name);
currentmap.leaflet.theoverlays[index]=value.name;
});
*/
currentmap.leaflet.view={};
currentmap.leaflet.view.latitude =map.getCenter().lat;
currentmap.leaflet.view.longitude = map.getCenter().lng;
currentmap.leaflet.view.zoom = map.getZoom();
currentmap.height = $('#map').height();
currentmap.width = $('#map').width();
// var cmap = [];
// cmap['leaflet']=currentmap;
//alert(JSON.stringify(currentmap));
$('#currentmapfield').val(JSON.stringify(currentmap));
$('#exportform').submit();
}
function leafletapp_watermark()
{
L.Control.Watermark = L.Control.extend({
onAdd: function(map) {
var img = L.DomUtil.create('img');
if (settings.watermark)
{
img.src = settings.watermark;
}
else
{
img.src = '/objects/maps/mapwatermarkredoak.png';
}
img.style.width = '50px';
return img;
},
onRemove: function(map) {
// Nothing to do here
}
});
L.control.watermark = function(opts) {
return new L.Control.Watermark(opts);
}
L.control.watermark({ position: 'bottomleft' }).addTo(map);
}
function leafletapp_setsize(size)
{
// alert('here');
var sar = size.split('x');
// alert(sar[0]+" "+sar[1]);
//alert($("#"+mapdivid).height()/2);
$("#"+mapdivid).height(sar[1]);
$("#"+mapdivid).width(sar[0]);
//$("#"+mapid).height(500);
//$("#"+mapid).width(500);
map.invalidateSize();
}