【发布时间】:2020-10-20 22:27:21
【问题描述】:
我正在尝试将地图集成到我的 wordpress 网站中 使用以下代码。更具体地说,我在块编辑器的“html块”中使用此代码。
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.7.1/dist/leaflet.css"
integrity="sha512-xodZBNTC5n17Xt2atTPuE1HxjVMSvLVW9ocqUKLsCC5CXdbqCmblAshOMAS6/keqq/sMZMZ19scR4PsZChSR7A=="
crossorigin=""/>
<script src="https://unpkg.com/leaflet@1.7.1/dist/leaflet.js"
integrity="sha512-XQoYMqMTK8LvdxXYG3nZ448hOEQiglfqkJs1NOQV44cWnUrBc8PkAOcXy20w0vlaXaVUearIOBhiXZ5V3ynxwA=="
crossorigin=""></script>
<script src="https://www.akzisemauer-berlin.de/map/js/leaflet.ajax.min.js"></script>
<div id="map" style="width:100%; height: 400px; ">
</div>
<script>
var map = L.map('map', {
zoomControl:true, maxZoom:18, minZoom:1
}).setView([52.513660,13.417072], 12);
L.tileLayer('http://a.tiles.wmflabs.org/bw-mapnik/{z}/{x}/{y}.png', {
attribution: '© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors',
minZoom: 1,
maxZoom: 28,
}).addTo(map);
//Akzisemauer-wand
function akziseWallStyle(feature) {
return {
color: wall_color(feature.properties.bezirk),
weight: 3,
};
}
function wall_color(bezirk) {
if(bezirk === "Friedrichshain-Kreuzberg") return "#e5b813"; else
return "#666666";
}
var akzise_wall = new L.GeoJSON.AJAX("https://www.akzisemauer-berlin.de/map/data/akzise_wall.geojson",{
style:akziseWallStyle});
akzise_wall.addTo(map);
//Akzisemauer-Tore
// markerpopup function
function markerpopup(feature, layer) {
if (feature.properties && feature.properties.name) {
layer.bindPopup(feature.properties.name);
}
}
var akziseGateFHXBStyle = {
radius: 8,
fillColor: "#e5b813",
color: "#000",
weight: 0.3,
opacity: 1,
fillOpacity: 0.8
}
var akzise_gates_FHXB = new L.GeoJSON.AJAX("https://www.akzisemauer-berlin.de/map/data/akzise_gates_FHXB.geojson", {
pointToLayer: function (feature, latlng) {
return L.circleMarker(latlng, akziseGateFHXBStyle)
}}, {
onEachFeature: markerpopup
});
akzise_gates_FHXB.addTo(map);
var akziseGatePBMIStyle = {
radius: 8,
fillColor: "#666666",
color: "#000",
weight: 0.3,
opacity: 1,
fillOpacity: 0.8
}
var akzise_gates_PBMI = new L.GeoJSON.AJAX("https://www.akzisemauer-berlin.de/map/data/akzise_gates_PBMI.geojson", {
pointToLayer: function (feature, latlng) {
return L.circleMarker(latlng, akziseGatePBMIStyle)
}}, {
onEachFeature: markerpopup
});
akzise_gates_PBMI.addTo(map);
testmarker = new L.CircleMarker([ 52.513660,13.417072], { radius: 10, color: 'green', }).bindPopup(String("DOES THIS WORK??")).addTo(map);
// Bezirksgrenzen
var bezirkStyle = {
"color": "#717171",
"weight": 0,
"fillOpacity": 0.4
};
var bezirksgrenzen = new L.GeoJSON.AJAX("https://www.akzisemauer-berlin.de/map/data/bezirksgrenzen_simp.geojson",{
style:bezirkStyle});
bezirksgrenzen.addTo(map);
setInterval(function () {
map.invalidateSize();
}, 100);
</script>
(我使用 invalidatesize 函数修复了地图无法正确加载的错误,请查看here)
我正在使用 point_to_layer 函数来设置点 (akzisemauer_gates) 的样式,它工作正常,但我无法让弹出窗口工作 - 两个 akzise_gates_* 功能和测试标记都没有。
我尝试了什么:
-
当我跳过点特征的样式并返回到标准标记时,弹出窗口会按预期工作。
-
当我在jsfiddle 中尝试相同的代码时,弹出窗口工作(它无法加载我的 geojson,可能是由于不相关的原因,但 testmarker 工作),所以我认为问题与 wordpress 相关
可能有人对 wordpress 中的传单行为有经验?
【问题讨论】:
-
GeoJSON 数据中的特征没有
"name"属性,而是"Gemeinde_name"一个。
标签: javascript wordpress leaflet