как получить описание внутри всплывающего окна, когда я нажимаю на маркер на карте - PullRequest
0 голосов
/ 06 декабря 2011

У меня есть 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>

код карты и получение данных и их отображение вместе. если кто-то знает, пожалуйста, помогите мне решить эту проблему. Спасибо заранее.

1 Ответ

0 голосов
/ 15 декабря 2011

Я предлагаю проверить значения для Description в вашей базе данных.Какие символы, которые являются специальными значениями Javascript, экранированы?

Например, предположим, что значение Description для одной записи: Вы не можете найти лучшую сторону, чем эта!

Если вы поставите этовместо $ de в строке выше addMarker и оставьте все остальные переменные в стороне, результирующая строка 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>');

Обратите внимание, что апостроф в «not» теперь заканчивает строку 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, чтобы быть уверенными, что они ничего не нарушают.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...