def writeOL(cls, iface, feedback, layers, groups, popup, visible, json, clustered, getFeatureInfo, settings, folder): QApplication.setOverrideCursor(QCursor(Qt.WaitCursor)) mapSettings = iface.mapCanvas().mapSettings() controlCount = 0 stamp = datetime.now().strftime("%Y_%m_%d-%H_%M_%S_%f") folder = os.path.join(folder, 'qgis2web_' + unicode(stamp)) restrictToExtent = settings["Scale/Zoom"]["Restrict to extent"] matchCRS = settings["Appearance"]["Match project CRS"] precision = settings["Data export"]["Precision"] optimize = settings["Data export"]["Minify GeoJSON files"] debugLibs = settings["Data export"]["Use debug libraries"] extent = settings["Scale/Zoom"]["Extent"] mapbounds = bounds(iface, extent == "Canvas extent", layers, matchCRS) fullextent = bounds(iface, False, layers, matchCRS) geolocateUser = settings["Appearance"]["Geolocate user"] maxZoom = int(settings["Scale/Zoom"]["Max zoom level"]) minZoom = int(settings["Scale/Zoom"]["Min zoom level"]) popupsOnHover = settings["Appearance"]["Show popups on hover"] highlightFeatures = settings["Appearance"]["Highlight on hover"] geocode = settings["Appearance"]["Add address search"] measureTool = settings["Appearance"]["Measure tool"] addLayersList = settings["Appearance"]["Add layers list"] htmlTemplate = settings["Appearance"]["Template"] layerSearch = unicode(settings["Appearance"]["Layer search"]) searchLayer = settings["Appearance"]["Search layer"] mapLibLocn = settings["Data export"]["Mapping library location"] writeFiles(folder, restrictToExtent, feedback, debugLibs) exportLayers(iface, layers, folder, precision, optimize, popup, json, restrictToExtent, extent, feedback, matchCRS) mapUnitsLayers = exportStyles(layers, folder, clustered) mapUnitLayers = getMapUnitLayers(mapUnitsLayers) osmb = writeLayersAndGroups(layers, groups, visible, folder, popup, settings, json, matchCRS, clustered, getFeatureInfo, iface, restrictToExtent, extent, mapbounds, mapSettings.destinationCrs().authid()) (jsAddress, cssAddress, layerSearch, controlCount) = writeHTMLstart(settings, controlCount, osmb, mapLibLocn, layerSearch, searchLayer, feedback, debugLibs) (geojsonVars, wfsVars, styleVars) = writeScriptIncludes(layers, json, matchCRS) popupLayers = "popupLayers = [%s];" % ",".join( ['1' for field in popup]) project = QgsProject.instance() controls = getControls(project, measureTool, geolocateUser) layersList = getLayersList(addLayersList) pageTitle = project.title() backgroundColor = getBackground(mapSettings) (geolocateCode, controlCount) = geolocateStyle(geolocateUser, controlCount) backgroundColor += geolocateCode mapextent = "extent: %s," % mapbounds if restrictToExtent else "" onHover = unicode(popupsOnHover).lower() highlight = unicode(highlightFeatures).lower() highlightFill = mapSettings.selectionColor().name() (proj, proj4, view) = getCRSView(mapextent, fullextent, maxZoom, minZoom, matchCRS, mapSettings) (measureControl, measuring, measure, measureUnit, measureStyle, controlCount) = getMeasure(measureTool, controlCount) geolocateHead = geolocationHead(geolocateUser) geolocate = geolocation(geolocateUser) geocodingLinks = geocodeLinks(geocode) geocodingJS = geocodeJS(geocode) geocodingScript = geocodeScript(geocode) m2px = getM2px(mapUnitsLayers) (extracss, controlCount) = getCSS(geocode, geolocateUser, controlCount) ol3layerswitcher = getLayerSwitcher() ol3popup = getPopup() ol3qgis2webjs = getJS(osmb) ol3layers = getLayers() mapSize = iface.mapCanvas().size() exp_js = getExpJS() grid = getGrid(project) values = { "@PAGETITLE@": pageTitle, "@CSSADDRESS@": cssAddress, "@EXTRACSS@": extracss, "@JSADDRESS@": jsAddress, "@MAP_WIDTH@": unicode(mapSize.width()) + "px", "@MAP_HEIGHT@": unicode(mapSize.height()) + "px", "@OL3_STYLEVARS@": styleVars, "@OL3_BACKGROUNDCOLOR@": backgroundColor, "@OL3_POPUP@": ol3popup, "@OL3_GEOJSONVARS@": geojsonVars, "@OL3_WFSVARS@": wfsVars, "@OL3_PROJ4@": proj4, "@OL3_PROJDEF@": proj, "@OL3_GEOCODINGLINKS@": geocodingLinks, "@OL3_GEOCODINGJS@": geocodingJS, "@QGIS2WEBJS@": ol3qgis2webjs, "@OL3_LAYERSWITCHER@": ol3layerswitcher, "@OL3_LAYERS@": ol3layers, "@OL3_MEASURESTYLE@": measureStyle, "@EXP_JS@": exp_js, "@LEAFLET_ADDRESSCSS@": "", "@LEAFLET_MEASURECSS@": "", "@LEAFLET_EXTRAJS@": "", "@LEAFLET_ADDRESSJS@": "", "@LEAFLET_MEASUREJS@": "", "@LEAFLET_CRSJS@": "", "@LEAFLET_LAYERSEARCHCSS@": "", "@LEAFLET_LAYERSEARCHJS@": "", "@LEAFLET_CLUSTERCSS@": "", "@LEAFLET_CLUSTERJS@": "" } with open(os.path.join(folder, "index.html"), "w") as f: htmlTemplate = htmlTemplate if htmlTemplate == "": htmlTemplate = "basic" templateOutput = replaceInTemplate(htmlTemplate + ".html", values) templateOutput = re.sub('\n[\s_]+\n', '\n', templateOutput) f.write(templateOutput) values = { "@GEOLOCATEHEAD@": geolocateHead, "@BOUNDS@": mapbounds, "@CONTROLS@": ",".join(controls), "@LAYERSLIST@": layersList, "@POPUPLAYERS@": popupLayers, "@VIEW@": view, "@LAYERSEARCH@": layerSearch, "@ONHOVER@": onHover, "@DOHIGHLIGHT@": highlight, "@HIGHLIGHTFILL@": highlightFill, "@GEOLOCATE@": geolocate, "@GEOCODINGSCRIPT@": geocodingScript, "@MEASURECONTROL@": measureControl, "@MEASURING@": measuring, "@MEASURE@": measure, "@MEASUREUNIT@": measureUnit, "@GRID@": grid, "@M2PX@": m2px, "@MAPUNITLAYERS@": mapUnitLayers } with open(os.path.join(folder, "resources", "qgis2web.js"), "w") as f: out = replaceInScript("qgis2web.js", values) f.write(out) QApplication.restoreOverrideCursor() return os.path.join(folder, "index.html")
def writeHTMLstart(outputIndex, webpage_name, cluster_set, address, measure, matchCRS, layerSearch, canvas, locate, qgis2webJS, template, feedback, useMultiStyle, useHeat, useShapes, useOSMB, useWMS, useWMTS, useVT): useCluster = False for cluster in cluster_set: if cluster: useCluster = True feedback.showFeedback("Writing HTML...") if webpage_name == "": pass else: webpage_name = unicode(webpage_name) cssAddress = '<link rel="stylesheet" href="css/leaflet.css">' jsAddress = '<script src="js/leaflet.js"></script>' if locate: cssAddress += '<link rel="stylesheet" ' cssAddress += 'href="css/L.Control.Locate.min.css">' jsAddress += '<script src="js/L.Control.Locate.min.js"></script>' if useMultiStyle: jsAddress += """ <script src="js/multi-style-layer.js"></script>""" if useHeat: jsAddress += """ <script src="js/leaflet-heat.js"></script>""" if useVT: jsAddress += """ <script src="js/Leaflet.VectorGrid.js"></script>""" if useShapes: jsAddress += """ <script src="js/leaflet-svg-shape-markers.min.js"></script>""" jsAddress += """ <script src="js/leaflet.rotatedMarker.js"></script> <script src="js/leaflet.pattern.js"></script>""" if useOSMB: jsAddress += """ <script src="js/OSMBuildings-Leaflet.js"></script>""" extracss = '<link rel="stylesheet" href="css/qgis2web.css">' extracss += '<link rel="stylesheet" href="css/fontawesome-all.min.css">' if useCluster: clusterCSS = """<link rel="stylesheet" href="css/MarkerCluster.css"> <link rel="stylesheet" href="css/MarkerCluster.Default.css">""" clusterJS = '<script src="js/leaflet.markercluster.js">' clusterJS += "</script>" else: clusterCSS = "" clusterJS = "" if layerSearch != "None": layerSearchCSS = '<link rel="stylesheet" ' layerSearchCSS += 'href="css/leaflet-search.css">' layerSearchJS = '<script src="js/leaflet-search.js"></script>' else: layerSearchCSS = "" layerSearchJS = "" if address: addressCSS = """ <link rel="stylesheet" href="css/""" addressCSS += """leaflet-control-geocoder.Geocoder.css">""" addressJS = """ <script src="js/leaflet-control-geocoder.Geocoder.js"></script>""" else: addressCSS = "" addressJS = "" if measure != "None": measureCSS = """ <link rel="stylesheet" href="css/leaflet-measure.css">""" measureJS = """ <script src="js/leaflet-measure.js"></script>""" else: measureCSS = "" measureJS = "" extraJS = """<script src="js/leaflet-hash.js"></script> <script src="js/Autolinker.min.js"></script> <script src="js/rbush.min.js"></script> <script src="js/labelgun.min.js"></script> <script src="js/labels.js"></script>""" if useWMS: extraJS += """ <script src="js/leaflet.wms.js"></script>""" if useWMTS: extraJS += """ <script src="js/leaflet-tilelayer-wmts.js"></script>""" if (matchCRS and canvas.mapSettings().destinationCrs().authid() != 'EPSG:4326'): crsJS = """ <script src="js/proj4.js"></script> <script src="js/proj4leaflet.js"></script>""" else: crsJS = "" exp_js = """ <script src="js/qgis2web_expressions.js"></script>""" canvasSize = canvas.size() values = {"@PAGETITLE@": webpage_name, "@CSSADDRESS@": cssAddress, "@EXTRACSS@": extracss, "@JSADDRESS@": jsAddress, "@LEAFLET_CLUSTERCSS@": clusterCSS, "@LEAFLET_CLUSTERJS@": clusterJS, "@LEAFLET_LAYERSEARCHCSS@": layerSearchCSS, "@LEAFLET_LAYERSEARCHJS@": layerSearchJS, "@LEAFLET_ADDRESSCSS@": addressCSS, "@LEAFLET_MEASURECSS@": measureCSS, "@LEAFLET_EXTRAJS@": extraJS, "@LEAFLET_ADDRESSJS@": addressJS, "@LEAFLET_MEASUREJS@": measureJS, "@LEAFLET_CRSJS@": crsJS, "@QGIS2WEBJS@": qgis2webJS, "@MAP_WIDTH@": unicode(canvasSize.width()) + "px", "@MAP_HEIGHT@": unicode(canvasSize.height()) + "px", "@EXP_JS@": exp_js, "@OL3_BACKGROUNDCOLOR@": "", "@OL3_STYLEVARS@": "", "@OL3_POPUP@": "", "@OL3_GEOJSONVARS@": "", "@OL3_WFSVARS@": "", "@OL3_PROJ4@": "", "@OL3_PROJDEF@": "", "@OL3_GEOCODINGLINKS@": "", "@OL3_GEOCODINGJS@": "", "@OL3_LAYERSWITCHER@": "", "@OL3_LAYERS@": "", "@OL3_MEASURESTYLE@": ""} with codecs.open(outputIndex, 'w', encoding='utf-8') as f: base = replaceInTemplate(template + ".html", values) base = re.sub(r'\n[\s_]+\n', '\n', base) f.write(unicode(base)) f.close() feedback.completeStep()
def writeHTMLstart(outputIndex, webpage_name, cluster_set, address, measure, matchCRS, layerSearch, canvas, mapLibLocation, locate, qgis2webJS, template, feedback, debugLibs, useMultiStyle, useHeat, useShapes, useOSMB, useWMS, useWMTS, useVT): useCluster = False for cluster in cluster_set: if cluster: useCluster = True feedback.showFeedback("Writing HTML...") if webpage_name == "": pass else: webpage_name = unicode(webpage_name) if mapLibLocation == "Local": cssAddress = '<link rel="stylesheet" href="css/leaflet.css">' if debugLibs: jsAddress = '<script src="js/leaflet-src.js"></script>' else: jsAddress = '<script src="js/leaflet.js"></script>' else: cssAddress = '<link rel="stylesheet" href=' cssAddress += '"http://unpkg.com/[email protected]/dist/leaflet.css">' jsAddress = '<script src="http://' jsAddress += 'unpkg.com/[email protected]/dist/leaflet.js"></script>' if locate: cssAddress += '<link rel="stylesheet" ' cssAddress += 'href="http://maxcdn.bootstrapcdn.com/font-awesome/' cssAddress += '4.6.1/css/font-awesome.min.css">' cssAddress += '<link rel="stylesheet" ' cssAddress += 'href="css/L.Control.Locate.min.css">' jsAddress += '<script src="js/L.Control.Locate.min.js"></script>' if useMultiStyle: jsAddress += """ <script src="js/multi-style-layer.js"></script>""" if useHeat: jsAddress += """ <script src="js/leaflet-heat.js"></script>""" if useVT: jsAddress += """ <script src="js/Leaflet.VectorGrid.js"></script>""" if useShapes: jsAddress += """ <script src="js/leaflet-svg-shape-markers.min.js"></script>""" jsAddress += """ <script src="js/leaflet.rotatedMarker.js"></script> <script src="js/leaflet.pattern.js"></script>""" if useOSMB: jsAddress += """ <script src="js/OSMBuildings-Leaflet.js"></script>""" extracss = '<link rel="stylesheet" href="css/qgis2web.css">' if useCluster: clusterCSS = """<link rel="stylesheet" href="css/MarkerCluster.css"> <link rel="stylesheet" href="css/MarkerCluster.Default.css">""" clusterJS = '<script src="js/leaflet.markercluster.js">' clusterJS += "</script>" else: clusterCSS = "" clusterJS = "" if layerSearch != "None": layerSearchCSS = '<link rel="stylesheet" ' layerSearchCSS += 'href="css/leaflet-search.css">' layerSearchJS = '<script src="js/leaflet-search.js"></script>' else: layerSearchCSS = "" layerSearchJS = "" if address: addressCSS = """ <link rel="stylesheet" href="css/Control.OSMGeocoder.css">""" addressJS = """ <script src="js/Control.OSMGeocoder.js"></script>""" else: addressCSS = "" addressJS = "" if measure != "None": measureCSS = """ <link rel="stylesheet" href="css/leaflet-measure.css">""" measureJS = """ <script src="js/leaflet-measure.js"></script>""" else: measureCSS = "" measureJS = "" extraJS = """<script src="js/leaflet-hash.js"></script> <script src="js/Autolinker.min.js"></script> <script src="js/rbush.min.js"></script> <script src="js/labelgun.min.js"></script> <script src="js/labels.js"></script>""" if useWMS: extraJS += """ <script src="js/leaflet.wms.js"></script>""" if useWMTS: extraJS += """ <script src="js/leaflet-tilelayer-wmts.js"></script>""" if (matchCRS and canvas.mapSettings().destinationCrs().authid() != 'EPSG:4326'): crsJS = """ <script src="js/proj4.js"></script> <script src="js/proj4leaflet.js"></script>""" else: crsJS = "" exp_js = """ <script src="js/qgis2web_expressions.js"></script>""" canvasSize = canvas.size() values = {"@PAGETITLE@": webpage_name, "@CSSADDRESS@": cssAddress, "@EXTRACSS@": extracss, "@JSADDRESS@": jsAddress, "@LEAFLET_CLUSTERCSS@": clusterCSS, "@LEAFLET_CLUSTERJS@": clusterJS, "@LEAFLET_LAYERSEARCHCSS@": layerSearchCSS, "@LEAFLET_LAYERSEARCHJS@": layerSearchJS, "@LEAFLET_ADDRESSCSS@": addressCSS, "@LEAFLET_MEASURECSS@": measureCSS, "@LEAFLET_EXTRAJS@": extraJS, "@LEAFLET_ADDRESSJS@": addressJS, "@LEAFLET_MEASUREJS@": measureJS, "@LEAFLET_CRSJS@": crsJS, "@QGIS2WEBJS@": qgis2webJS, "@MAP_WIDTH@": unicode(canvasSize.width()) + "px", "@MAP_HEIGHT@": unicode(canvasSize.height()) + "px", "@EXP_JS@": exp_js, "@OL3_BACKGROUNDCOLOR@": "", "@OL3_STYLEVARS@": "", "@OL3_POPUP@": "", "@OL3_GEOJSONVARS@": "", "@OL3_WFSVARS@": "", "@OL3_PROJ4@": "", "@OL3_PROJDEF@": "", "@OL3_GEOCODINGLINKS@": "", "@OL3_GEOCODINGJS@": "", "@OL3_LAYERSWITCHER@": "", "@OL3_LAYERS@": "", "@OL3_MEASURESTYLE@": ""} with codecs.open(outputIndex, 'w', encoding='utf-8') as f: base = replaceInTemplate(template + ".html", values) base = re.sub(r'\n[\s_]+\n', '\n', base) f.write(unicode(base)) f.close() feedback.completeStep()
def writeOL(cls, iface, feedback, layers, groups, popup, visible, json, clustered, getFeatureInfo, settings, folder): QApplication.setOverrideCursor(QCursor(Qt.WaitCursor)) mapSettings = iface.mapCanvas().mapSettings() controlCount = 0 stamp = datetime.now().strftime("%Y_%m_%d-%H_%M_%S_%f") folder = os.path.join(folder, 'qgis2web_' + unicode(stamp)) restrictToExtent = settings["Scale/Zoom"]["Restrict to extent"] matchCRS = settings["Appearance"]["Match project CRS"] precision = settings["Data export"]["Precision"] optimize = settings["Data export"]["Minify GeoJSON files"] debugLibs = settings["Data export"]["Use debug libraries"] extent = settings["Scale/Zoom"]["Extent"] mapbounds = bounds(iface, extent == "Canvas extent", layers, matchCRS) fullextent = bounds(iface, False, layers, matchCRS) geolocateUser = settings["Appearance"]["Geolocate user"] maxZoom = int(settings["Scale/Zoom"]["Max zoom level"]) minZoom = int(settings["Scale/Zoom"]["Min zoom level"]) popupsOnHover = settings["Appearance"]["Show popups on hover"] highlightFeatures = settings["Appearance"]["Highlight on hover"] geocode = settings["Appearance"]["Add address search"] measureTool = settings["Appearance"]["Measure tool"] addLayersList = settings["Appearance"]["Add layers list"] htmlTemplate = settings["Appearance"]["Template"] layerSearch = unicode(settings["Appearance"]["Layer search"]) searchLayer = settings["Appearance"]["Search layer"] mapLibLocn = settings["Data export"]["Mapping library location"] writeFiles(folder, restrictToExtent, feedback, debugLibs) exportLayers(iface, layers, folder, precision, optimize, popup, json, restrictToExtent, extent, feedback, matchCRS) mapUnitsLayers = exportStyles(layers, folder, clustered) mapUnitLayers = getMapUnitLayers(mapUnitsLayers) osmb = writeLayersAndGroups(layers, groups, visible, folder, popup, settings, json, matchCRS, clustered, getFeatureInfo, iface, restrictToExtent, extent, mapbounds, mapSettings.destinationCrs().authid()) (jsAddress, cssAddress, layerSearch, controlCount) = writeHTMLstart(settings, controlCount, osmb, mapLibLocn, layerSearch, searchLayer, feedback, debugLibs) (geojsonVars, wfsVars, styleVars) = writeScriptIncludes(layers, json, matchCRS) popupLayers = "popupLayers = [%s];" % ",".join( ['1' for field in popup]) project = QgsProject.instance() controls = getControls(project, measureTool, geolocateUser) layersList = getLayersList(addLayersList) pageTitle = project.title() backgroundColor = getBackground(mapSettings) (geolocateCode, controlCount) = geolocateStyle(geolocateUser, controlCount) backgroundColor += geolocateCode mapextent = "extent: %s," % mapbounds if restrictToExtent else "" onHover = unicode(popupsOnHover).lower() highlight = unicode(highlightFeatures).lower() highlightFill = mapSettings.selectionColor().name() (proj, proj4, view) = getCRSView(mapextent, fullextent, maxZoom, minZoom, matchCRS, mapSettings) (measureControl, measuring, measure, measureUnit, measureStyle, controlCount) = getMeasure(measureTool, controlCount) geolocateHead = geolocationHead(geolocateUser) geolocate = geolocation(geolocateUser) geocodingLinks = geocodeLinks(geocode) geocodingJS = geocodeJS(geocode) geocodingScript = geocodeScript(geocode) m2px = getM2px(mapUnitsLayers) (extracss, controlCount) = getCSS(geocode, geolocateUser, controlCount) ol3layerswitcher = getLayerSwitcher() ol3popup = getPopup() ol3qgis2webjs = getJS(osmb) ol3layers = getLayers() mapSize = iface.mapCanvas().size() exp_js = getExpJS() grid = getGrid(project) values = {"@PAGETITLE@": pageTitle, "@CSSADDRESS@": cssAddress, "@EXTRACSS@": extracss, "@JSADDRESS@": jsAddress, "@MAP_WIDTH@": unicode(mapSize.width()) + "px", "@MAP_HEIGHT@": unicode(mapSize.height()) + "px", "@OL3_STYLEVARS@": styleVars, "@OL3_BACKGROUNDCOLOR@": backgroundColor, "@OL3_POPUP@": ol3popup, "@OL3_GEOJSONVARS@": geojsonVars, "@OL3_WFSVARS@": wfsVars, "@OL3_PROJ4@": proj4, "@OL3_PROJDEF@": proj, "@OL3_GEOCODINGLINKS@": geocodingLinks, "@OL3_GEOCODINGJS@": geocodingJS, "@QGIS2WEBJS@": ol3qgis2webjs, "@OL3_LAYERSWITCHER@": ol3layerswitcher, "@OL3_LAYERS@": ol3layers, "@OL3_MEASURESTYLE@": measureStyle, "@EXP_JS@": exp_js, "@LEAFLET_ADDRESSCSS@": "", "@LEAFLET_MEASURECSS@": "", "@LEAFLET_EXTRAJS@": "", "@LEAFLET_ADDRESSJS@": "", "@LEAFLET_MEASUREJS@": "", "@LEAFLET_CRSJS@": "", "@LEAFLET_LAYERSEARCHCSS@": "", "@LEAFLET_LAYERSEARCHJS@": "", "@LEAFLET_CLUSTERCSS@": "", "@LEAFLET_CLUSTERJS@": ""} with open(os.path.join(folder, "index.html"), "w") as f: htmlTemplate = htmlTemplate if htmlTemplate == "": htmlTemplate = "full-screen" templateOutput = replaceInTemplate( htmlTemplate + ".html", values) templateOutput = re.sub(r'\n[\s_]+\n', '\n', templateOutput) f.write(templateOutput) values = {"@GEOLOCATEHEAD@": geolocateHead, "@BOUNDS@": mapbounds, "@CONTROLS@": ",".join(controls), "@LAYERSLIST@": layersList, "@POPUPLAYERS@": popupLayers, "@VIEW@": view, "@LAYERSEARCH@": layerSearch, "@ONHOVER@": onHover, "@DOHIGHLIGHT@": highlight, "@HIGHLIGHTFILL@": highlightFill, "@GEOLOCATE@": geolocate, "@GEOCODINGSCRIPT@": geocodingScript, "@MEASURECONTROL@": measureControl, "@MEASURING@": measuring, "@MEASURE@": measure, "@MEASUREUNIT@": measureUnit, "@GRID@": grid, "@M2PX@": m2px, "@MAPUNITLAYERS@": mapUnitLayers} with open(os.path.join(folder, "resources", "qgis2web.js"), "w") as f: out = replaceInScript("qgis2web.js", values) f.write(out) QApplication.restoreOverrideCursor() return os.path.join(folder, "index.html")
def writeHTMLstart(outputIndex, webpage_name, cluster_set, address, measure, layerSearch, canvas, locate, qgis2webJS, template, feedback): useCluster = False for cluster in cluster_set: if cluster: useCluster = True feedback.showFeedback("Writing HTML...") if webpage_name == "": pass else: webpage_name = unicode(webpage_name) cssAddress = '<link rel="stylesheet" href="mapbox/mapbox-gl.css">' jsAddress = '<script src="./mapbox/mapbox-gl.js">' jsAddress += '</script>' extracss = '<link rel="stylesheet" href="css/qgis2web.css">' if useCluster: clusterCSS = """<link rel="stylesheet" href="css/MarkerCluster.css"> <link rel="stylesheet" href="css/MarkerCluster.Default.css">""" clusterJS = '<script src="js/leaflet.markercluster.js">' clusterJS += "</script>" else: clusterCSS = "" clusterJS = "" if layerSearch != "None": layerSearchCSS = '<link rel="stylesheet" ' layerSearchCSS += 'href="css/leaflet-search.css">' layerSearchJS = '<script src="js/leaflet-search.js"></script>' else: layerSearchCSS = "" layerSearchJS = "" if address: addressCSS = """ <link rel="stylesheet" href="mapbox/""" addressCSS += """mapbox-gl-generic-geocoder.css">""" addressJS = """ <script src="mapbox/mapbox-gl-generic-geocoder.min.js"></script>""" else: addressCSS = "" addressJS = "" if measure == "Metric": measureCSS = """ <link rel="stylesheet" href="./mapbox/measure.css">""" measureJS = """ <script src="./mapbox/measureMetric.js"></script> <script src="./mapbox/turf.min.js"></script>""" elif measure == "Imperial": measureCSS = """ <link rel="stylesheet" href="./mapbox/measure.css">""" measureJS = """ <script src="./mapbox/measureImperial.js"></script> <script src="./mapbox/turf.min.js"></script>""" else: measureCSS = "" measureJS = "" if locate: locateJS = """ <script> map.addControl( new mapboxgl.GeolocateControl({ positionOptions: { enableHighAccuracy: true }, trackUserLocation: true }) ); </script>""" else: locateJS = "" extraJS = "" exp_js = """ <script src="js/qgis2web_expressions.js"></script>""" canvasSize = canvas.size() values = { "@PAGETITLE@": webpage_name, "@CSSADDRESS@": cssAddress, "@EXTRACSS@": extracss, "@JSADDRESS@": jsAddress, "@LEAFLET_CLUSTERCSS@": clusterCSS, "@LEAFLET_CLUSTERJS@": clusterJS, "@LEAFLET_LAYERSEARCHCSS@": layerSearchCSS, "@LEAFLET_LAYERSEARCHJS@": layerSearchJS, "@LEAFLET_ADDRESSCSS@": addressCSS, "@LEAFLET_MEASURECSS@": measureCSS, "@LEAFLET_EXTRAJS@": extraJS, "@LEAFLET_ADDRESSJS@": addressJS, "@LEAFLET_MEASUREJS@": "", "@LEAFLET_CRSJS@": "", "@LEAFLET_LAYERFILTERCSS@": "", "@LEAFLET_LAYERFILTERJS@": "", "@QGIS2WEBJS@": qgis2webJS, "@MAP_WIDTH@": unicode(canvasSize.width()) + "px", "@MAP_HEIGHT@": unicode(canvasSize.height()) + "px", "@EXP_JS@": exp_js, "@OL3_BACKGROUNDCOLOR@": "", "@OL3_STYLEVARS@": "", "@OL3_POPUP@": """<nav id="menu"></nav> <div id="distance" class="distance-container"></div>""", "@OL3_GEOJSONVARS@": "", "@OL3_WFSVARS@": "", "@OL3_PROJ4@": "", "@OL3_PROJDEF@": "", "@OL3_GEOCODINGLINKS@": "", "@OL3_GEOCODINGJS@": "", "@OL3_LAYERSWITCHER@": "", "@OL3_LAYERS@": "", "@OL3_MEASURESTYLE@": "", "@MBGLJS_MEASURE@": measureJS, "@MBGLJS_LOCATE@": locateJS } with codecs.open(outputIndex, 'w', encoding='utf-8') as f: base = replaceInTemplate(template + ".html", values) base = re.sub(r'\n[\s_]+\n', '\n', base) f.write(unicode(base)) f.close() feedback.completeStep()