2012-04-21 60 views
0

我使用tiles id在數據庫中存儲標記。在谷歌地圖中使用getTile()函數的正確方法

這樣當被顯示在地圖上某瓷磚的所有標記,這種瓷磚含有的

要求太顯示。

所以我最終創建了一個無法正常工作的代碼。它並沒有要求所有需要的瓷磚

瓷磚。爲了更加準確,每次移動地圖時都只需要一個圖塊。

 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; 

}; 

我的問題:它是一個妥善的解決辦法?

+0

有關更多信息,請訪問:http://kashey.ru/maps/ajax-loading-as-tiles/ – knightOfSpring 2012-04-21 15:14:45

回答

0

我不確定你要在這裏做什麼;但爲什麼你必須打擾點擊哪個瓷磚加載?

您可以給Marker {position:the_position,...}和Maps API負責顯示它,否?

+0

瓷磚用於請求當前處於視口中的標記。標記使用標記羣集顯示。 – knightOfSpring 2012-04-21 15:12:51

相關問題