php - 使用 Marker CLusterer 的 Google map - map 挂起!!!为什么!

标签 php javascript google-maps

这很奇怪。我正在使用标记聚类器来聚集所有标记,但是第一次渲染 map 时以及当我尝试拖动或平移它时 - 它挂起并且 Firefox 告诉我脚本正在减慢速度,所以我必须停止脚本。但是,如果我将其缩小 - 它会正常缩放并从那时起平移它不会导致任何问题 - 我不知道这里出了什么问题。这是我的代码,我在这里遗漏了一些东西 - 一定是我的初始化有问题:

var map = null;

function initializeGMaps() { 



  if (GBrowserIsCompatible())
  {
    map = new GMap2(document.getElementById("map_canvas"));


    {
      var side_bar_html = "";
      var gmarkers = [];
      var htmls = [];
      var i = 0;
        iconBlue = new GIcon();
      // A function to create the marker and set up the event window
      function createMarker(point,name,html) {


        iconBlue.image = 'http://labs.google.com/ridefinder/images/mm_20_yellow.png';
        iconBlue.shadow = 'http://labs.google.com/ridefinder/images/mm_20_shadow.png';
        iconBlue.iconSize = new GSize(12, 20);
        iconBlue.shadowSize = new GSize(22, 20);
        iconBlue.iconAnchor = new GPoint(6, 20);
        iconBlue.infoWindowAnchor = new GPoint(5, 1);

        var marker = new GMarker(point,{ icon:iconBlue, });
        GEvent.addListener(marker, "click", function() {
          marker.openInfoWindowHtml(html);
        });
        gmarkers[i] = marker;
        htmls[i] = html;
        side_bar_html += '<a href="javascript:myclick(' + i + ')">' + name + '<\/a><br>';
        i++;
        return marker;
      }


      // This function picks up the click and opens the corresponding info window
      function myclick(i) {
        gmarkers[i].openInfoWindowHtml(htmls[i]);
      }


      // create the map
      map = new GMap2(document.getElementById("map_canvas"));
      map.setCenter(new GLatLng( 43.907787, -50.359741), 5);

        var customUI = map.getDefaultUI();
        customUI.controls.maptypecontrol = false;
        customUI.controls.menumaptypecontrol = true;    
        map.setUI(customUI);

      // A function to read the data
      function readMap() {
        var url='get-map-markers.php';
        var request = GXmlHttp.create();
        request.open("GET", url, true);
        request.onreadystatechange = function() {
          if (request.readyState == 4) {
            var xmlDoc = request.responseXML;
            // obtain the array of markers and loop through it
            var markers = xmlDoc.documentElement.getElementsByTagName("marker");

            // hide the info window, otherwise it still stays open where the removed marker used to be
            map.getInfoWindow().hide();

            map.clearOverlays();

            // empty the array
            allmarkers = [];
            //var clusterer = new Clusterer( map );

            for (var i = 0; i < markers.length; i++) {
              // obtain the attribues of each marker
              var lat = parseFloat(markers[i].getAttribute("lat"));
              var lng = parseFloat(markers[i].getAttribute("lng"));
              var point = new GLatLng(lat,lng);
              var html = markers[i].getAttribute("html");
              var label = markers[i].getAttribute("label");
              // create the marker

              var marker = createMarker(point,label,html);
              //map.addOverlay(marker);
              allmarkers.push(marker);
              //clusterer.AddMarker( marker, html );
            }
            var markerCluster = new MarkerClusterer(map, allmarkers);
            // put the assembled side_bar_html contents into the side_bar div


          }
        }
        request.send(null);
      }

      readMap();

    }




  }
}

$(document).ready(function() { initializeGMaps(); } );
$('body').unload( function () { GUnload(); } );  
<小时/>

更新:我刚刚注意到 google.com 上的脚本导致页面变慢:(我该如何解决这个问题?我在代码中做了什么来带来这种行为。

最佳答案

Markerclusterer 很糟糕。使用这个:

http://googlemapsapi.martinpearman.co.uk/clustermarker

我的演示:http://www.stopdetelefoongids.nl/stats/ (来源位于/includes/maps.js )

关于php - 使用 Marker CLusterer 的 Google map - map 挂起!!!为什么!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/847278/

相关文章:

php - 使用 Javascript 获取要提交的行中第一个单元格的值

javascript - 如何在 wordpress 中使用 php 函数(在 functions.php 中)返回的值分配一个 javascript 变量(在页面上)

javascript - 如何在 Bootstrap 折叠中折叠多个克隆元素之一

javascript - Google map v3 tileloaded 事件

android - 如何在单击时在单独的警报对话框中缩放 map fragment

php - 在 centos 6 上使用 yum install php-pear 时出现问题

PHP用连字符替换所有空格

javascript - 具有多个子项的 Accordion 菜单(面板)

javascript - 当所选下拉选项的值大于 0 时,使提交按钮处于事件状态

javascript - 在谷歌地图上添加多个标记