1

我的 post() 结果只显示其他 map.php 生成的数据,但无法显示地图框。我正在通过 post() 发送 id,它显示了来自 mysql 数据库的确切 php 数据。只有地图 div 是空的。以下是代码。

$(document).ready(function() {
    $(".mylink").click(function(){
        var $linkattr = $(this).attr("rel");
//      alert($linkattr);
        $.post("map.php", {myid:$linkattr}).done(function(data) {
            $("#mapcomeshere").html(data);
            evt.preventDefault();
        });
    });
});

我的 map.php 脚本是

<?php
include('db.php');

$myid = "25";//$_POST['myid'];
$result = mysql_query("select * from property Where Id = '" . $myid ."' AND status = 1");
$row = mysql_fetch_array($result);
echo $row['Id'] . " : " . $row['owner'] . " : " . $row['lnglat'] . $row['propertyadd']  ."<br>";

$maploc = $row['lnglat'];
$myadd = $row['propertyadd'];
?>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
  google.maps.event.addDomListener(window, 'load', function() {
    var map = new google.maps.Map(document.getElementById('map'), {
      zoom: 13,
      center: new google.maps.LatLng(24.893379,67.028061),
      mapTypeId: google.maps.MapTypeId.ROADMAP
    });

    var infoWindow = new google.maps.InfoWindow;

    var onMarkerClick = function() {
      var marker = this;
      var latLng = marker.getPosition();
      infoWindow.setContent('<?php echo $myadd ?>');

      infoWindow.open(map, marker);
    };
    google.maps.event.addListener(map, 'click', function() {
      infoWindow.close();
    });

    var marker1 = new google.maps.Marker({
      map: map,
      position: new google.maps.LatLng(<?php echo $maploc ?>)
    });

    google.maps.event.addListener(marker1, 'click', onMarkerClick);
  });
</script>
hi
<div id="map"></div>

请帮忙

4

1 回答 1

1

我可以建议几件事。

首先,您的代码中有一个概念性问题,您在其中编写:

  infoWindow.setContent('<?php echo $myadd ?>');

您需要了解 PHP 是在服务器上处理的,因此无法通过这种方式直接由 JavaScript 执行。这样做的目的是将 infoWindow 的内容从字面上更改为 '<?php echo $myadd ?>'。

现在至于您的问题,我认为您通过 AJAX 响应返回所有代码以错误的方式处理它。JavaScript 应该存在于页面中,map.php 应该只返回数据,可能是 JSON 数据的形式,例如:

地图.php:

// ... database stuff, then finally:
echo json_encode(array(
    'map' => array(
        'lat' => 67.028061,
        'long' => 24.893379,
        'zoom' => 13
    ),
    'infoWindowContent' => $myadd,
    //... etc
));

该 JavaScript 的其余部分属于对 $.post() 的回调。

    $.post("map.php", {myid:$linkattr}).done(function(data) {
        // Not this: $("#mapcomeshere").html(data);
        google.maps.event.addDomListener(window, 'load', function() {
            var map = new google.maps.Map(document.getElementById('map'), data.map);
            // ... setup event handlers, etc ...
        });
    });

它的作用是为您的代码提供更简洁的 API。map.php 的职责只是为地图提供数据,而不是 JavaScript。JavaScript 都在一个地方。

于 2013-02-02T08:59:41.110 回答