繁体   English   中英

当我单击地图中的标记时,如何在弹出窗口中获取描述

[英]how to get the description inside the popup when i click on marker in a map

我有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>

地图代码与检索数据并显示在一起。 如果有人知道,请帮助我解决这个问题。谢谢。

我建议检查数据库中“描述”的值。 是否会转义Javascript特殊值的任何字符?

例如,假设一条记录的Description值是:您找不到比这更好的聚会了!

如果您在上面的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>');

请注意,“不能”中的撇号现在结束了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约定对它们进行转义,以确保它们不会破坏任何内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM