Google Maps V3 API速度很慢

时间:2013-11-21 04:32:01

标签: javascript google-maps google-maps-api-3

我希望能帮助我优化代码以提高速度。我不知道我做错了什么,但是地图甚至需要花费一段时间(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>';



?>

0 个答案:

没有答案