【问题标题】:how to get the description inside the popup when i click on marker in a map当我单击地图中的标记时如何在弹出窗口中获取描述
【发布时间】:2011-12-06 08:21:15
【问题描述】:

我有 2 张桌子,我已经提到了它的字段, 1.事件:event_id,标题,位置,纬度,经度,地址,描述,链接 2. event_time:event_id,start_time,end_time,start_date,end_date,date

我在下面给出了我的地图代码,因为我试图在地图上单击特定标记时获取弹出窗口。当我单击标记时,它会显示弹出窗口,并且在弹出窗口中我们检索表格数据。 我的问题是,我能够从数据库中获取除描述之外的所有数据。但是当我尝试检索描述时,地图不会显示。 从数据库中检索数据的方式也在下面的代码中给出。

<script src="http://maps.google.com/maps/api/js?v=3&sensor=false" type="text/javascript"></script>
<script type="text/javascript"><script language="javascript">
new google.maps.Size(32, 32), new google.maps.Point(0, 0),
 new google.maps.Point(16, 32));
 var center = null;
 var map = null;
 var markersArray = [];
 var currentPopup;
 var bounds = new google.maps.LatLngBounds();
 function addMarker(lat, lng, info) {
 var pt = new google.maps.LatLng(lat, lng);
 bounds.extend(pt);
 var marker = new google.maps.Marker({
 position: pt,
 icon: icon,
 map: map
 });
 var popup = new google.maps.InfoWindow({
 content: info,
 maxWidth: 500,

 });
 google.maps.event.addListener(marker, "click", function() {
     if (currentPopup != null) {
 currentPopup.close();
 currentPopup =null;

 }
 popup.open(map, marker);
 currentPopup = popup;

 });
  google.maps.event.addListener(popup, "closeclick", function() {

  currentPopup.close();
  currentPopup = null;
 });
 }

 function initMap() {
 map = new google.maps.Map(document.getElementById("map1"), {
 center: new google.maps.LatLng(12.972352762582736,77.59734949737549),
 zoom:60,
 mapTypeId: google.maps.MapTypeId.ROADMAP,
 mapTypeControl: false,
 mapTypeControlOptions: {
 style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR
 },
 navigationControl: true,
 navigationControlOptions: {
 style: google.maps.NavigationControlStyle.SMALL
 }
 });
 <?

$query=mysql_query("select * from events join event_time on (events.event_id=event_time.event_id) where events.isapproved='Y'");

 while ($row = mysql_fetch_array($query))
 {
 $title=$row['title'];
 $location=$row['location'];
 $sdate=$row['start_date'];
 $edate=$row['end_date'];
 $stime=$row['start_time']; 
 $end_time=$row['end_time']; 
 $lat=$row['latitude'];
 $lon=$row['longitude'];
 $address=$row['address'];
 $date=$row['date'];
 $de=$row['description'];
 $link=$row['link'];
 echo ("addMarker($lat,$lon,'$stime ".to."$end_time<br/><br/><b>$title</b><br/><br/>$address<br/><br/>$de<br/><a>$link</a>');\n");
 }
 ?>

 center = bounds.getCenter();
 map.fitBounds(bounds);
 }
 </script>

地图代码和检索数据并显示它是一起的。 如果有人知道,请帮我解决这个问题。提前谢谢。

【问题讨论】:

    标签: php javascript mysql google-maps


    【解决方案1】:

    我建议检查数据库中描述的值。是否有任何作为 Javascript 特殊值的字符进行了转义?

    例如,假设一条记录的描述值为: 你找不到比这个更好的派对了!

    如果您在上面的 addMarker 行中将其替换为 $de,并保留所有其他变量,则 Javascript 的结果行是:

    addMarker($lat,$lon,'$stime to $end_time<br/><br/><b>$title</b><br/><br/>$address<br/><br/>You can't find a better party than this one!<br/><a>$link</a>');
    

    请注意,“can't”中的撇号现在结束了 Javascript 字符串。 Javascript 解释器看到的代码如下:

    addMarker($lat,$lon,'$stime to $end_time<br/><br/><b>$title</b><br/><br/>$address<br/><br/>You can'
    t find a better party than this one!<br/><a>$link</a>');
    

    第一行是不完整的语句,第二行以引号之外的 $de 值的第二部分开头。

    一般来说,几乎所有变量值都会首先被解释为 Javascript,然后再被解释为 HTML。因此,您应该根据 HTML 约定和 Javascript 约定对它们进行转义,以确保它们不会破坏任何内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-03
      • 1970-01-01
      • 2015-05-18
      • 2019-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-19
      相关资源
      最近更新 更多