Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 关于本地存储的传单标记,如何获取标记lat lng并从存储中排除?_Javascript_Html_Local Storage_Leaflet_Marker - Fatal编程技术网

Javascript 关于本地存储的传单标记,如何获取标记lat lng并从存储中排除?

Javascript 关于本地存储的传单标记,如何获取标记lat lng并从存储中排除?,javascript,html,local-storage,leaflet,marker,Javascript,Html,Local Storage,Leaflet,Marker,我创建了一个函数,可以单击在地图上放置一个标记,并将其保存到localstorage。在标记弹出窗口内,它显示标记位置和删除按钮 我怎样才能使delete按钮获得实际的标记位置,与localstorage中存储的标记位置进行比较,如果找到一个相等的值,就从localstorage中删除它 使用此选项: for ( var i = 0, len = localStorage.length; i < len; ++i ) { console.log( localStorage.getIte

我创建了一个函数,可以单击在地图上放置一个标记,并将其保存到localstorage。在标记弹出窗口内,它显示标记位置和删除按钮

我怎样才能使delete按钮获得实际的标记位置,与localstorage中存储的标记位置进行比较,如果找到一个相等的值,就从localstorage中删除它

使用此选项:

for ( var i = 0, len = localStorage.length; i < len; ++i ) {
  console.log( localStorage.getItem( localStorage.key( i ) ) );
}
守则:

    function onMapClick(e) {

    var geojsonFeature = {
        "type": "Feature",
        "properties": {},
        "geometry": {
            "type": "Point",
            "coordinates": [e.latlng.lat, e.latlng.lng]
        }
    }

    var marker;

    L.geoJson(geojsonFeature, {

        pointToLayer: function(feature, latlng){

            marker = L.marker(e.latlng, {

            title: "Resource Location",
            alt: "Resource Location",
            riseOnHover: true,
            draggable: false,
            icon: totem

            }).bindPopup("<span>X: " + e.latlng.lng + ", Y: " + e.latlng.lat + "</span><br><a href='#' id='marker-delete-button'>Delete marker</a>");

            marker.on("popupopen", onPopupOpen);

            marker.on("dragend", function (ev) {

                var chagedPos = ev.target.getLatLng();
                this.bindPopup(chagedPos.toString()).openPopup();

            });

          // Begin store markers in local storage
          storeMarker(e.latlng);
          // End store markers in local storage

            return marker;
        }
    }).addTo(map);
}

function onPopupOpen() {
    var tempMarker = this;

    $("#marker-delete-button:visible").click(function () {

        map.removeLayer(tempMarker);
        localStorage.removeItem("markers");
    });
}

/// Load markers
function loadMarkers(){
    var markers = localStorage.getItem("markers");
    if(!markers) return;
    markers = JSON.parse(markers);
    markers.forEach(function(entry) {
        latlng = JSON.parse(entry);
            var geojsonFeature = {
                "type": "Feature",
                "properties": {},
                "geometry": {
                    "type": "Point",
                    "coordinates": [latlng.lat, latlng.lng]
                }
            }

        var marker;

        L.geoJson(geojsonFeature, {

            pointToLayer: function(feature){

                marker = L.marker(latlng, {

                    title: "Resource Location",
                    alt: "Resource Location",
                    riseOnHover: true,
                    draggable: true,
                    icon: totem


                }).bindPopup("<span>X: " + latlng.lng + ", Y: " + latlng.lat + "</span><br><a href='#' id='marker-delete-button'>Delete marker</a>");

                marker.on("popupopen", onPopupOpen);

                return marker;
            }
        }).addTo(map);
    });
}
/// Store markers
function storeMarker(marker){

    var markers = localStorage.getItem("markers");
    if(!markers) {
        markers = new Array();
        console.log(marker);
        markers.push(JSON.stringify(marker));
    }
    else
    {
        markers = JSON.parse(markers);
        markers.push(JSON.stringify(marker));
    }
    console.log(JSON.stringify(markers));
    localStorage.setItem('markers', JSON.stringify(markers));
}


    map.on('click', onMapClick);

    loadMarkers();
函数onmaplick(e){
var geojsonFeature={
“类型”:“功能”,
“属性”:{},
“几何学”:{
“类型”:“点”,
“坐标”:[e.latlng.lat,e.latlng.lng]
}
}
var标记;
L.geoJson(geojsonFeature{
pointToLayer:功能(特性、latlng){
标记器=L.标记器(如板条{
标题:“资源位置”,
alt:“资源位置”,
上升悬停:对,
可拖动:错误,
图标:图腾
}).bindPopup(“X:+e.latlng.lng+”,Y:+e.latlng.lat+”
”; marker.on(“popupopen”,onPopupOpen); 标记器打开(“dragend”,功能(ev){ var chagedPos=ev.target.getLatLng(); this.bindpoppup(chagedPos.toString()).openPopup(); }); //开始在本地存储中存储标记 存储标记(如latlng); //本地存储中的结束存储标记 返回标记; } }).addTo(地图); } 函数onPopupOpen(){ var tempMarker=这个; $(“#标记删除按钮:可见”)。单击(函数(){ 地图移除层(临时标记); localStorage.removietem(“标记”); }); } ///装载标记 函数loadMarkers(){ var markers=localStorage.getItem(“标记”); 如果(!标记)返回; markers=JSON.parse(markers); markers.forEach(函数(条目){ latlng=JSON.parse(条目); var geojsonFeature={ “类型”:“功能”, “属性”:{}, “几何学”:{ “类型”:“点”, “坐标”:[latlng.lat,latlng.lng] } } var标记; L.geoJson(geojsonFeature{ pointToLayer:函数(特性){ 标记器=L.标记器(板条{ 标题:“资源位置”, alt:“资源位置”, 上升悬停:对, 真的, 图标:图腾 }).bindPopup(“X:+latlng.lng+”,Y:+latlng.lat+”
”; marker.on(“popupopen”,onPopupOpen); 返回标记; } }).addTo(地图); }); } ///存储标记 函数存储标记器(标记器){ var markers=localStorage.getItem(“标记”); 如果(!标记){ markers=新数组(); 控制台日志(标记器); markers.push(JSON.stringify(marker)); } 其他的 { markers=JSON.parse(markers); markers.push(JSON.stringify(marker)); } log(JSON.stringify(markers)); setItem('markers',JSON.stringify(markers)); } map.on('click',onmaclick); loadMarkers();
您似乎对locaStorage是什么/做什么感到困惑,它将数据存储为键:值对,因此您所拥有的基本上是一个包含以下内容的列表:

key: \"lat\":1780,
value: \"lng\":456
至于删除geoJSON功能,一种可能是使用函数
onEachFeature()
,该函数可以在geoJSON功能添加到地图之前将其绑定到geoJSON功能,因此,当单击弹出窗口的删除按钮时,您可以使用该函数绑定删除功能,但同时可以从地图中删除图层,它不会将本地存储中的数据作为传单擦除,因为无法引用其中的数据


另一种可能是在创建点时添加点,以便在希望从数据库中删除点时更容易引用它们。

关于\,您的数据已经是JSON格式,因此当您从localStorage获取数据并再次运行stringify时,您将JSON转换为JSON。所以,在loadmarkers函数中,我必须删除这一行:
markers=JSON.parse(markers)
key: \"lat\":1780,
value: \"lng\":456