Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在谷歌地图中使用getTile()函数的正确方法_Php_Javascript_Jquery_Ajax_Google Maps - Fatal编程技术网

Php 在谷歌地图中使用getTile()函数的正确方法

Php 在谷歌地图中使用getTile()函数的正确方法,php,javascript,jquery,ajax,google-maps,Php,Javascript,Jquery,Ajax,Google Maps,我正在使用tiles id在数据库中存储标记 因此,当某个平铺显示在地图上时,该平铺包含的所有标记都将被删除 请求并显示 所以我最终创建了一个无法正常工作的代码。它没有要求所有需要的东西 瓷砖。更准确地说,每次我移动地图时,它只需要一块瓷砖 ServerFetchMapType.prototype.tileSize = new google.maps.Size(256,256); ServerFetchMapType.prototype.maxZoom = 100;

我正在使用tiles id在数据库中存储标记

因此,当某个平铺显示在地图上时,该平铺包含的所有标记都将被删除

请求并显示

所以我最终创建了一个无法正常工作的代码。它没有要求所有需要的东西

瓷砖。更准确地说,每次我移动地图时,它只需要一块瓷砖

     ServerFetchMapType.prototype.tileSize = new google.maps.Size(256,256);

     ServerFetchMapType.prototype.maxZoom = 100;

     ServerFetchMapType.prototype.name = "Server Tile #s";

     ServerFetchMapType.prototype.alt  = "Server Data Tile Map Type";

ServerFetchMapType.prototype.getTile = function(coord, zoom, ownerDocument){

  if(zoom>10){

  var tileId=this.getAddrLatLng(coord,zoom);

  if(isTileAlreadyLoaded(tileId)){
    return ;
  }

  ServerFetchedTiles[tileId] = true;

  var url = "markerRequestPageJson.php?tileNumber=";
  var json;
   $.getJSON(url+tileId,function(json){
    // this is where we can loop through the results in the json object
        var _item;
        var infoWindow = new google.maps.InfoWindow;

        $.each(json, function(i,_item){
            var point = new google.maps.LatLng(
              parseFloat(_item.lat),
              parseFloat(_item.lng));
            var html = _item.id + "<br/>";
            var marker = new google.maps.Marker({
            map: map,
            position: point
          });

          markerClusterer.addMarker(marker);
          bindInfoWindow(marker, map, infoWindow, html);
        });
});

 }
 return;

};
但最后,我做了一些改变,并按其应有的方式运作:

     ServerFetchMapType.prototype.tileSize = new google.maps.Size(256,256);

     ServerFetchMapType.prototype.maxZoom = 100;

     ServerFetchMapType.prototype.name = "Server Tile #s";

     ServerFetchMapType.prototype.alt  = "Server Data Tile Map Type";

ServerFetchMapType.prototype.getTile = function(coord, zoom, ownerDocument){

  if(zoom>10){

  var tileId=this.getAddrLatLng(coord,zoom);

  if(isTileAlreadyLoaded(tileId)){
    return ;
  }

  ServerFetchedTiles[tileId] = true;

  var div = ownerDocument.createElement('DIV');

  var url = "markerRequestPageJson.php?tileNumber=";
  var json;
   $.getJSON(url+tileId,function(json){
    // this is where we can loop through the results in the json object
        var _item;
        var infoWindow = new google.maps.InfoWindow;

        $.each(json, function(i,_item){
            var point = new google.maps.LatLng(
              parseFloat(_item.lat),
              parseFloat(_item.lng));
            var html = _item.id + "<br/>";
            var marker = new google.maps.Marker({
            map: map,
            position: point
          });

          markerClusterer.addMarker(marker);
          bindInfoWindow(marker, map, infoWindow, html);
        });
});
  return div;
 }
 return;

};

我的问题:这是一个合适的解决方案吗?

我不知道你在这里想做什么;但是为什么你要费心去点击正在加载的磁贴呢


您可以只给标记{position:the_position,…},Maps API应该负责显示它,不使用?

平铺来请求当前在视口中的标记。和标记使用标记群集显示。更多信息可在此处找到: