更新:尝试在php中存储数组,然后调用javascript函数

更新:尝试在php中存储数组,然后调用javascript函数,php,javascript,Php,Javascript,我尝试使用php将结果存储在mysql的数组中,然后使用结果调用javascript函数使用结果。我不确定为什么我的地图没有显示出来(尝试在我的页面中实现谷歌地图) 我的php/html/javascript调用 <?php ..... <div id="content" ...... $address=array(); //will list out where to go while ($sec = mysql_fetch_array($result2)

我尝试使用php将结果存储在mysql的数组中,然后使用结果调用javascript函数使用结果。我不确定为什么我的地图没有显示出来(尝试在我的页面中实现谷歌地图)

我的php/html/javascript调用

 <?php
.....
<div id="content"
           ......

$address=array();
//will list out where to go
while ($sec = mysql_fetch_array($result2)) {
        $address[$x++] = ($sec[5] . " " . $sec[7]);
}
print_r($latlng);
print_r($address);
mysql_close($link);
?>

<div id="address_container">
<?php
print array_shift($address);
?>
</div>
</div>

我的Javascript代码:

    <script type="text/javascript">
var geocoder;
  var map;
  function initialize() {
    geocoder = new google.maps.Geocoder();
    var latlng = new google.maps.LatLng(-34.397, 150.644);
    var myOptions = {
      zoom: 8,
      center: latlng,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    }
    map = new google.maps.Map(document.getElementById("map_canvas"), myOp$
  }

function codeAddress() {
var address = document.getElementByID("address_container").innerHTML;
console.log(address);
    geocoder.geocode( { 'address': address}, function(results, status) {
      if (status == google.maps.GeocoderStatus.OK) {
        map.setCenter(results[0].geometry.location);
        var marker = new google.maps.Marker({
            map: map,
            position: results[0].geometry.location
        });
      } else {
        alert("Geocode was not successful for the following reason: " + s$
      }
    });
}

var地理编码器;
var映射;
函数初始化(){
geocoder=新的google.maps.geocoder();
var latlng=新的google.maps.latlng(-34.397150.644);
变量myOptions={
缩放:8,
中心:拉特林,
mapTypeId:google.maps.mapTypeId.ROADMAP
}
map=new google.maps.map(document.getElementById(“map_canvas”),myOp$
}
函数代码地址(){
var address=document.getElementByID(“地址容器”).innerHTML;
控制台日志(地址);
geocoder.geocode({'address':address},函数(结果,状态){
if(status==google.maps.GeocoderStatus.OK){
map.setCenter(结果[0].geometry.location);
var marker=new google.maps.marker({
地图:地图,
位置:结果[0]。几何体。位置
});
}否则{
警报(“地理代码未成功,原因如下:”+s$
}
});
}

查看这是否会产生您期望的结果:

PHP:


不要打印\r$地址,而是将其回显到js变量中

</div>
<script type="text/javascript">
var address = <?php echo json_encode($address); ?> ;
document.write(codeAddress());
</script>

var地址=;
document.write(codeAddress());

那么就不需要在函数中选择它了

这就是我从google api中得到的示例

var geocoder;
  var map;
  function initialize() {
    geocoder = new google.maps.Geocoder();
    var latlng = new google.maps.LatLng(-34.397, 150.644);
    var myOptions = {
      zoom: 8,
      center: latlng,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    }
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
  }

  function codeAddress() {
    var address = document.getElementById("address").value;
    geocoder.geocode( { 'address': address}, function(results, status) {
      if (status == google.maps.GeocoderStatus.OK) {
        map.setCenter(results[0].geometry.location);
        var marker = new google.maps.Marker({
            map: map,
            position: results[0].geometry.location
        });
      } else {
        alert("Geocode was not successful for the following reason: " + status);
      }
    });
  }

<body onload="initialize()">
 <div id="map_canvas" style="width: 320px; height: 480px;"></div>
  <div>
    <input id="address" type="textbox" value="Sydney, NSW">
    <input type="button" value="Encode" onclick="codeAddress()">
  </div>
</body>
var地理编码器;
var映射;
函数初始化(){
geocoder=新的google.maps.geocoder();
var latlng=新的google.maps.latlng(-34.397150.644);
变量myOptions={
缩放:8,
中心:拉特林,
mapTypeId:google.maps.mapTypeId.ROADMAP
}
map=new google.maps.map(document.getElementById(“map_canvas”),myOptions);
}
函数代码地址(){
var address=document.getElementById(“地址”).value;
geocoder.geocode({'address':address},函数(结果,状态){
if(status==google.maps.GeocoderStatus.OK){
map.setCenter(结果[0].geometry.location);
var marker=new google.maps.marker({
地图:地图,
位置:结果[0]。几何体。位置
});
}否则{
警报(“地理编码因以下原因未成功:“+状态”);
}
});
}

ref:

ID为
address
的HTML元素是什么?您试图使用什么格式将数据从PHP传输到javascript?我认为您需要使用/缺少对…的调用,因为您正在传递对HTML元素本身的引用,这不可能是正确的?可以吗?在Google maps上不是很大,但我不相信这是什么它期望…我正在尝试输入一个地址数组…例如。数组([1]=>1251 Front Street Lahaina,HI 96761[2]=>160 Keonekai路Hihei,HI 96753)。然后将其输入javascript,以将这些地址转换为地图上的标记。但现在我的地图也没有显示…虽然这是我的直接想法,但在对主题进行了一点阅读之后,该函数似乎需要一个带有人类可读地址的字符串。在我看来,OP的代码似乎已从中删除。我是吗当我插入“echo json_encode($address);”语句时,你可以在我的网站上看到任何东西吗?或者这是做什么的?对不起,我是javascript新手。它不会在页面上显示任何内容,因为数据放在JS变量中。你可以通过
console.log(address)查看内容在脚本会话中,显示控制台(chrome)或firebug(firefox)时,我的javascript代码是否正确?只需使用“var address=document.getElementByID(“address”);“我的地图没有显示,这是我的错。(doh!!)。但是使用函数codeAddress()它仍然没有将标记放在地图上。因此,让我相信函数没有被调用???@pythono您是否从
控制台.log(address);
行获得任何输出?另外,如果您添加
警报('Callback function called');
行作为回调的第一行,您会得到什么(在
if(status==google.maps.GeocoderStatus.OK){
line之前)?hi daverandom,我没有得到任何输出,无论是使用:'console.log(address);alert('Callback function called');if(status==google.maps.GeocoderStatus.OK){
</div>
<script type="text/javascript">
var address = <?php echo json_encode($address); ?> ;
document.write(codeAddress());
</script>
var geocoder;
  var map;
  function initialize() {
    geocoder = new google.maps.Geocoder();
    var latlng = new google.maps.LatLng(-34.397, 150.644);
    var myOptions = {
      zoom: 8,
      center: latlng,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    }
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
  }

  function codeAddress() {
    var address = document.getElementById("address").value;
    geocoder.geocode( { 'address': address}, function(results, status) {
      if (status == google.maps.GeocoderStatus.OK) {
        map.setCenter(results[0].geometry.location);
        var marker = new google.maps.Marker({
            map: map,
            position: results[0].geometry.location
        });
      } else {
        alert("Geocode was not successful for the following reason: " + status);
      }
    });
  }

<body onload="initialize()">
 <div id="map_canvas" style="width: 320px; height: 480px;"></div>
  <div>
    <input id="address" type="textbox" value="Sydney, NSW">
    <input type="button" value="Encode" onclick="codeAddress()">
  </div>
</body>