【问题标题】:Geocoding town names to their coordinates in a loop在循环中将城镇名称地理编码为其坐标
【发布时间】:2010-12-15 16:02:16
【问题描述】:

我已经阅读了类似的帖子,但仍然没有找到适合自己的解决方案。基本上我在 PHP 中有一个包含国家+城镇的数组,我需要用标记在地图上显示它们。这是我的代码:

function showAddress(markers) {

    var address = "<?php echo $Fcity[$j], " , ", $Fcountry[$j]?>";
     if (geocoder) {
        geocoder.getLatLng(address, function(point) {
            if (!point) {
              alert(address + " not found");
            } else {

            var marker = new GMarker(point);
            map.addOverlay(marker);
            markers[i] = marker;        
              marker.openInfoWindowHtml(address);

            }
          }
        );
      }
    }

如果我对一个位置进行地理编码,一切似乎都可以正常工作,但我无法将其放入一个循环中来处理所有这些。

for (var i = 0; i < markers.length; i++) {
            showAddress(markers[i]);
        }

【问题讨论】:

  • 呃,人们真的会这样做吗?交错 PHP 和 JavaScript?这真的很混乱......我建议在某处将 PHP 分配给 Javascript 变量,然后对 Javascript 变量执行逻辑。这段代码很难调试。

标签: javascript php for-loop google-maps-markers geocoding


【解决方案1】:

在你的 showAddress 函数中,你引用了标记[i]。

但是,您没有传入 i... 该变量不在函数的范围内。因此,您不是在迭代和添加,而是将变量一遍又一遍地添加到数组中不存在的位置。

你要么需要传入 i 要么不将 showAddress 封装在一个函数中。

如何制作函数 showAddresses 并将循环放入函数中。

【讨论】:

  • 我试过了,但它没有帮助,即使在 "i";$i++){ var address = ""; if (geocoder) { geocoder.getLatLng(address, function(point) { if (!point) { alert(address + " not found"); } else { map.addOverlay(new GMarker(point)); marker.openInfoWindowHtml(地址); } } } ); } }
猜你喜欢
  • 1970-01-01
  • 2018-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多