当前位置: 首页 > 知识库问答 >
问题:

在单独的AJAX函数/API调用中使用现有的LAT/LNG传单标记

韩朝斑
2023-03-14

我有一张传单地图,上面的标记显示了一个选定国家的顶级城市。单击标记时,在AJAX调用中使用该城市的LAT/LNG,并通过使用weather API的PHP cURL例程弹出显示该城市天气信息的模式。触发此click事件后会出现几个easyButtons。

现在,我想添加另一个模式,该模式包含相同城市的不同信息,当用户单击这些easyButtons之一时,该模式将弹出,方法是使用另一个API使用与天气调用中使用的相同的LAT/LNG值。

是否有一种简单的方法可以访问AJAX调用中的LAT/LNG值,以便在函数范围之外使用?即,当用户单击新的easyButton时,可以使用来自当前标记的LAT/LNG数据?或者关于如何实现此功能的任何其他建议?

任何帮助都非常感谢-谢谢!

JS:

var locationList = [];
                    citiesArray.forEach(city => {
                        locationList.push({
                            lat: city.lat,
                            lng: city.lng,
                            cityName: city.toponymName
                        });
                    });
                    
                    console.log(locationList)
                    for (var i=0; i < locationList.length; i++) {
                        $cityMarker = L.marker(new L.latLng([locationList[i]['lat'], locationList[i]['lng']]))
                        .addTo($layers)
                        .bindPopup(locationList[i]['cityName'])
                    
                
                        $($cityMarker).on('click', (event) => {
                            var marker = event.target;
                            $.ajax({
                                url: "getLatLngInfo.php",
                                type: 'POST',
                                data: {
                                    lat: marker.getLatLng().lat,
                                    lng: marker.getLatLng().lng
                                },
                                success: function(result) {
                    
                                    console.log(result);
                                    $weatherButton.enable();
                                    $wikiButton.enable();
                                        $('#weather').modal('show');

                                },
                                error: function (jqXHR, textStatus, errorThrown) {
                                    console.log(errorThrown);
                                    console.log(textStatus);
                                    console.log(jqXHR);
                                
                                }
                            });
                        });
                    }
                }
            },
            error: function (jqXHR, textStatus, errorThrown) {
                console.log(errorThrown);
                console.log(textStatus);
                console.log(jqXHR);
        }
    });
});

$($wikiButton).on('click'.............

共有1个答案

金皓君
2023-03-14

您可以将单击的标记存储在变量clickedmarker:

var locationList = [];
var clickedMarker;
                    citiesArray.forEach(city => {
                        locationList.push({
                            lat: city.lat,
                            lng: city.lng,
                            cityName: city.toponymName
                        });
                    });
                    
                    console.log(locationList)
                    for (var i=0; i < locationList.length; i++) {
                        $cityMarker = L.marker(new L.latLng([locationList[i]['lat'], locationList[i]['lng']]))
                        .addTo($layers)
                        .bindPopup(locationList[i]['cityName'])
                    
                
                        $($cityMarker).on('click', (event) => {
                            var marker = event.target;
                            clickedMarker = marker;
                            $.ajax({
                                url: "getLatLngInfo.php",
                                type: 'POST',
                                data: {
                                    lat: marker.getLatLng().lat,
                                    lng: marker.getLatLng().lng
                                },
                                success: function(result) {
                    
                                    console.log(result);
                                    $weatherButton.enable();
                                    $wikiButton.enable();
                                    $('#weather').modal('show');

                                },
                                error: function (jqXHR, textStatus, errorThrown) {
                                    console.log(errorThrown);
                                    console.log(textStatus);
                                    console.log(jqXHR);
                                
                                }
                            });
                        });
                    }
                }
            },
            error: function (jqXHR, textStatus, errorThrown) {
                console.log(errorThrown);
                console.log(textStatus);
                console.log(jqXHR);
        }
    });
});
$($wikiButton).on('click',()=>{
    var marker = clickedMarker;

    $.ajax({
                                url: "getLatLngInfo.php",
                                type: 'POST',
                                data: {
                                    lat: marker.getLatLng().lat,
                                    lng: marker.getLatLng().lng
                                },
                                success: function(result) {

                                    console.log(result);
                                    $weatherButton.enable();
                                    $wikiButton.enable();
                                    $('#weather').modal('show');

                                },
                                error: function (jqXHR, textStatus, errorThrown) {
                                    console.log(errorThrown);
                                    console.log(textStatus);
                                    console.log(jqXHR);

                                }
                            });
});
 类似资料:
  • 我有一个脚本,其中为页面上的每个元素调用一个函数。它可以很好地处理单独的函数调用,但如果我试图用唯一的选择器调用函数,它就不能正常工作。我如何实现一个循环,为每个html块单独调用函数,但只使用一个类(例如,如果我有X元素),而不使用像现在这样的单独的选择器(startLoop('#stack1');startLoop('#stack2');ecc.ecc.)对它们进行寻址(startLoop('

  • 问题内容: 我正在使用jQuery $ .ajax()函数。我已经将其放入父函数中,该函数将一些值传递给ajax函数。我想做的是有一个用户定义的回调函数,该函数获取从ajax成功函数传入的数据参数。 这是我当时想的可行方法,但并非如此: 然后,我希望能够调用该函数,并传入我的自定义函数,以便可以使用该函数内部的成功函数数据: 我希望这与以下内容相同: 问题答案: 对我来说很好用:

  • 所以如果我有一个lat-lng&一个距离。我可以用距离和起点(lat-lng)计算下一个点(lat-lng)吗。方向无关紧要。 所以基本上我想要的是像lat2-lng2=lat1-lng1(一些公式)的距离,如下所示

  • 正在尝试使用sql db中的lat/long坐标移动间隔上的标记/映射。 在moveMarkerMap()中设置新的google.maps.LatLng(14,41)将移动它,返回的数据显示在alert()中,但与moveMarkerMap()一起使用时,标记不会移动 从ajax返回的字符串是正确的格式;(9.624672,7.242244)如警报()所示,所以不确定为什么它不工作。

  • 问题内容: 使用的技术:MySQL 5.1和PHP 5.3 我正在为我正在编写的网站设计一个新的数据库。我正在寻找现在存储纬度和经度值的最佳方法。 过去,我一直使用DECIMAL并使用PHP / MySQL选择以下形式: 查找最近的匹配地点。 开始阅读有关新技术的更多信息,我想知道是否应该使用Spatial Extensions。http://dev.mysql.com/doc/refman/5.

  • 我有谷歌地图搜索框,当我搜索特定的地方时,我想用(lat,lng)访问标记位置,当我通过拖放标记时,我可以准确地访问位置 但我希望在搜索完成时获得标记位置,而不使用&