使用 API 请求中的 Lat 和 Long 详细信息更新传单标记

Updating a Leaflet Marker With Lan & Long Details From an API Request

我正在从 API 请求中获取经纬度数据,如下所示,但我希望每次在下拉菜单 (selCountry) 中更改国家/地区时更新 markef。


$('#selCountry').on('change', function(){
  $.ajax({
      url: "php/restCountries.php",
      type: 'POST',
      dataType: 'json',
      data: {
          country: $('#selCountry').val()   
      },
      success: function(result) {
        
          console.log('restCountries', result);
          if (result.status.name == "ok") {
              currencyCode = result.currency.code;
              iso2CountryCode = result.data.alpha2Code;
              var countryName2 = result.data.name;
              countryName = countryName2.replace(/\s+/g, '_');
              var latlng = result.data.latlng
              
              $('#countryName').html('<strong> Country: ' + result['data']['nativeName'] + '</strong>');
              $('#txtCurrencyCode').html('<strong> Capital City: ' + result['data']['capital'] + '<br> Currency Symbol: '+ result.currency.symbol + '<br> Currency Name: '  + result.currency.name + '<br> Currency Code: ' + result.currency.code + '</strong>');
              
              console.log(result.data.latlng);

我已经尝试将标记详细信息更改为 latlng 信息,该信息会在选择新国家/地区时更新,但标记不会更新。我错过了什么?

我在 ajax 调用之外有标记,如果我将它移到调用内部,整个地图就会崩溃并且无法加载。

L.marker([latlng], {icon: redMarker}).bindPopup(result['data']['capital']).addTo(map);

如有任何建议,我们将不胜感激。

谢谢

设法找到使请求生效的方法。我将 latlng 数据分离到变量中,并将它们输入到标记语句中。

它现在为每个选定的国家更改添加一个标记。

$('#selCountry').on('change', function(){
  $.ajax({
      url: "php/restCountries.php",
      type: 'POST',
      dataType: 'json',
      data: {
          country: $('#selCountry').val()   
      },
      success: function(result) {
        
          console.log('restCountries', result);
          if (result.status.name == "ok") {
              currencyCode = result.currency.code;
              iso2CountryCode = result.data.alpha2Code;
              var countryName2 = result.data.name;
              countryName = countryName2.replace(/\s+/g, '_');
              
              $('#countryName').html('<strong> Country: ' + result['data']['nativeName'] + '</strong>');
              $('#txtCurrencyCode').html('<strong> Capital City: ' + result['data']['capital'] + '<br> Currency Symbol: '+ result.currency.symbol + '<br> Currency Name: '  + result.currency.name + '<br> Currency Code: ' + result.currency.code + '</strong>');
              
              //console.log(result.data.latlng[0]);
              
              var currentLat = result.data.latlng[0]
              var currentLng = result.data.latlng[1]
              
                marker = L.marker;
              
               L.marker([currentLat, currentLng], {icon: redMarker}).addTo(map);
             
        };

快乐的日子!