2011-12-06 9 views
0

私は2つのテーブルを持っていますが、そのフィールドは です。1.イベント:event_id、タイトル、位置、緯度、経度、住所、説明、リンク 2. event_time:start_time、start_time、end_time、start_date、end_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> 

地図コードとデータの取得と表示は一緒です。 誰もがそれを知っているなら、私はこのproblem.thanksを事前に解決するのを手伝ってください。

答えて

0

データベースの[説明]の値を確認することをお勧めします。 Javascriptの特殊な値である文字はエスケープされていますか?

たとえば、1つのレコードの説明値が であるとします。これよりも優れたパーティーが見つかりません。

あなたは上記のご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>'); 

お知らせすることはできません「のアポストロフィこと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>'); 

は、最初の行が不完全な声明で、2行目は引用符の外の$ド値の第二部で始まります。

一般に、ほとんどの変数の値は、最初にJavascriptとして解釈され、次にHTMLとして解釈されます。したがって、何かを混乱させないようにするために、HTMLの慣習に従い、次にJavascriptの規約に従ってそれらをエスケープする必要があります。