我希望能帮助我优化代码以提高速度。我不知道我做错了什么,但是地图甚至需要花费一段时间(6秒)才能显示,然后是标记的另一秒钟。我检查了控制台,它没有抛出任何错误。我环顾四周并没有找到任何答案,因为我没有使用萤火虫,它不是V3而不是2.任何帮助都将不胜感激!
function FSREPMap() {
function listinginfo(infowindow, marker) {
return function() {
infowindow.open(map, marker);
};
}
var myOptions = {
center: new google.maps.LatLng(<?php echo $GMapLat; ?>, <?php echo $GMapLong; ?>),
zoom: <?php echo $GMapZoom; ?>,
<?php
$GMapType = 'ROADMAP';
if (function_exists('fsrep_pro_map_hook')) { fsrep_pro_map_hook(); } ?>
mapTypeId: google.maps.MapTypeId.<?php echo $GMapType; ?>
};
var map = new google.maps.Map(document.getElementById("listings_map"),
myOptions);
if (window.XMLHttpRequest) {
// FireFox, Opera, Safari, Chrome, IE7
xmlhttp = new XMLHttpRequest();
} else {
// IE6
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET","<?php echo get_option('home'); ?>/wp-content/plugins/firestorm-real-estate-plugin/xml/marker_listings.php?<?php echo $MarkerListingURL; ?>",false);
xmlhttp.send();
xmlDoc = xmlhttp.responseXML;
listing = xmlDoc.getElementsByTagName("LISTING");
var bounds = new google.maps.LatLngBounds ();
for (var i=0;i<listing.length;i++) {
var lat = listing[i].getElementsByTagName("LAT")[0].childNodes[0].nodeValue;
var lng = listing[i].getElementsByTagName("LONG")[0].childNodes[0].nodeValue;
var latlngset;
latlngset = new google.maps.LatLng(lat, lng);
bounds.extend (latlngset);
var marker = new google.maps.Marker({
position: new google.maps.LatLng(listing[i].getElementsByTagName("LAT")[0].childNodes[0].nodeValue, listing[i].getElementsByTagName("LONG")[0].childNodes[0].nodeValue),
map: map,
title: listing[i].getElementsByTagName("LABEL")[0].childNodes[0].nodeValue
});
if (listing[i].getElementsByTagName("IMAGE")[0].childNodes[0].nodeValue != 'None') {
var content = '<div style="text-align: center;"><a href="' + listing[i].getElementsByTagName("URL")[0].childNodes[0].nodeValue + '"><img src="' + listing[i].getElementsByTagName("IMAGE")[0].childNodes[0].nodeValue + '" border="0" alt="" style="border: 1px solid #999999;"/></a><br/><strong>' + listing[i].getElementsByTagName("NAME")[0].childNodes[0].nodeValue + '</strong><br/>' + listing[i].getElementsByTagName("PRICE")[0].childNodes[0].nodeValue + '<br/>' + listing[i].getElementsByTagName("LOCATION")[0].childNodes[0].nodeValue + '<br/><a href="' + listing[i].getElementsByTagName("URL")[0].childNodes[0].nodeValue + '">view listing</a><br/></div>';
} else {
var content = '<div style="text-align: center;"><strong>' + listing[i].getElementsByTagName("NAME")[0].childNodes[0].nodeValue + '</strong><br/>Price: ' + listing[i].getElementsByTagName("PRICE")[0].childNodes[0].nodeValue + '<br/>' + listing[i].getElementsByTagName("LOCATION")[0].childNodes[0].nodeValue + '<br/><a href="' + listing[i].getElementsByTagName("URL")[0].childNodes[0].nodeValue + '">view listing</a><br/></div>';
}
var infowindow = new google.maps.InfoWindow();
infowindow.setContent(content);
google.maps.event.addListener(
marker,
'click',
listinginfo(infowindow, marker)
);
}
<?php if ($CityID != 0) { echo 'map.fitBounds (bounds);'; } ?>
}
window.onload=FSREPMap;
</script>
这是我的标记列表代码:
<?php
header("Content-type:text/xml; charset=utf-8");
require("../../../../wp-config.php");
$connection=mysql_connect (DB_HOST, DB_USER, DB_PASSWORD);
if (!$connection) { die('Not connected : ' . mysql_error());}
$db_selected = mysql_select_db(DB_NAME, $connection);
if (!$db_selected) {
die ('Can\'t use db : ' . mysql_error());
}
if (isset($_GET['id'])) {
$query = "SELECT * FROM ".$table_prefix."fsrep_listings WHERE listing_visibility = 1 AND listing_long != '' AND listing_lat != '' AND listing_id = ".$_GET['id'];
} elseif (isset($_GET['filter'])) {
$query = "SELECT * FROM ".$wpdb->prefix."fsrep_listings";
if ($_GET['filter'] != 0) {
$query .= ", ".$wpdb->prefix."fsrep_listings_to_fields WHERE ";
$Filters = $wpdb->get_results("SELECT * FROM ".$wpdb->prefix."fsrep_filters_details WHERE filter_id = ".$_GET['filter']);
foreach ($Filters as $Filters) {
$query .= " ".$wpdb->prefix."fsrep_listings_to_fields.listing_id = ".$wpdb->prefix."fsrep_listings.listing_id AND ".$wpdb->prefix."fsrep_listings_to_fields.field_id = ".$Filters->field_id ." AND ".$wpdb->prefix."fsrep_listings_to_fields.listing_value = '".$Filters->field_values."' AND ";
}
if ($FSREPconfig['ListingModeration'] == 'Yes'){
$query .= " ".$wpdb->prefix."fsrep_listings.listing_visibility = 1 AND ";
}
$query = substr($query, 0, -4);
}
} elseif (isset($_GET['cityid'])) {
$query = "SELECT * FROM ".$table_prefix."fsrep_listings WHERE listing_visibility = 1 AND listing_long != '' AND listing_lat != '' AND listing_address_city = ".$_GET['cityid'];
} elseif (isset($_GET['provinceid'])) {
$query = "SELECT * FROM ".$table_prefix."fsrep_listings WHERE listing_visibility = 1 AND listing_long != '' AND listing_lat != '' AND listing_address_province = ".$_GET['provinceid'];
} elseif (isset($_GET['countryid'])) {
$query = "SELECT * FROM ".$table_prefix."fsrep_listings WHERE listing_visibility = 1 AND listing_long != '' AND listing_lat != '' AND listing_address_country = ".$_GET['countryid'];
} else {
$query = "SELECT * FROM ".$table_prefix."fsrep_listings WHERE listing_visibility = 1 AND listing_long != '' AND listing_lat != ''";
}
$result = mysql_query($query);
if (!$result) {
die('Invalid query: ' . mysql_error());
}
echo '<MARKERS>';
while ($row = @mysql_fetch_assoc($result)){
if (is_numeric($row['listing_price'])) { $row['listing_price'] = number_format($row['listing_price'], 2, '.', ','); }
$Image = 'None';
if (file_exists(ABSPATH.'wp-content/uploads/fsrep/houses/small/'.$row['listing_id'].'.jpg')) {
$Image = get_option('home').'/wp-content/uploads/fsrep/houses/small/'.$row['listing_id'].'.jpg';
}
echo '<LISTING>';
echo '<LABEL>'.htmlspecialchars($row['listing_address_number'].' '.$row['listing_address_street'].' '.$row['listing_address_city'].' '.$row['listing_address_province'].' '.$row['listing_address_postal']).'</LABEL>';
echo '<ID>'.$row['listing_id'].'</ID>';
echo '<NAME>'.htmlspecialchars(fsrep_listing_name_gen($row['listing_id'], '')).'</NAME>';
echo '<PRICE>'.htmlspecialchars(fsrep_listing_price_gen($row['listing_price'], $row['listing_currency'])).'</PRICE>';
echo '<LOCATION>'.htmlspecialchars(fsrep_get_address_name($row['listing_address_city'], 'city').', '.fsrep_get_address_name($row['listing_address_province'], 'province')).'</LOCATION>';
echo '<LAT>'.$row['listing_lat'].'</LAT>';
echo '<LONG>'.$row['listing_long'].'</LONG>';
echo '<IMAGE>'.$Image.'</IMAGE>';
echo '<URL>'.fsrep_listing_url_gen($row['listing_id']).'</URL>';
echo '</LISTING>';
}
echo '</MARKERS>';
?>