2011-06-14 155 views
0

我有一個通過MapTiler創建的漂亮的小自定義地圖,它很容易讓它用GMaps渲染。下面是幾行代碼的基礎知識。Google Maps V3 KML圖層覆蓋ImageMapType

我也有一個可愛的小KML層也呈現罰款。

但是,對於我的生活,我無法同時顯示兩個圖層。只要指示KML呈現,自定義地圖圖層就會消失。螢火蟲甚至告訴我,我的自定義瓷磚甚至沒有要求!理想情況下,我需要在我的自定義地圖圖層上使用KML圖層。這將顯示一些英國地標的位置。

在我的腦海裏,我在思考投影類型和衝突,但是當兩個圖層都單獨在底圖上正確渲染時,我確實被矇在鼓裏。

任何人都可以在Google Maps V3中的自定義地圖類型上給我KML層上的建議嗎?

謝謝

var MyCustomMapType = new google.maps.ImageMapType({ 
getTileUrl: function(tile, zoom) { 
     return "/static/images/maps/uk/" + zoom+"/"+tile.x+"/"+ tile.y +".png"; 
}, 
tileSize: new google.maps.Size(256, 256), 
    }); 

    function init(){ 

    var mapOpts = { 
    zoom: 6, 
    center: new google.maps.LatLng(53.94315470224928, -3.515625), 
    mapTypeId: google.maps.MapTypeId.ROADMAP 
}; 

map = new google.maps.Map(document.getElementById("map_canvas"), mapOpts); 
map.overlayMapTypes.insertAt(0, MyCustomMapType); 
var cathedrals = new google.maps.KmlLayer('http://pointing_at_my/kml/'); 

// as soon as this executes, ImageMapType layer disappears 
cathedrals.setMap(map); 
} 

回答

0

解決。只是不要成爲一個白癡。

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> 
    <script type="text/javascript"> 

     var map, cathedrals; 

     var ukOverlay = new google.maps.ImageMapType({ 

      getTileUrl: function(coord, zoom) { 

       var ymax = 1 << zoom; 
       var y = ymax - coord.y -1; 
       return "/static/images/maps/uk/" + zoom+"/"+coord.x+"/"+y+".png"; 

      }, 
      tileSize: new google.maps.Size(256, 256), 
      isPng: true 

     }); 

function init(){ 

    var mapOpts = { 
     zoom: 6, 
     center: new google.maps.LatLng(54.40315470224928, -3.515625), 
     mapTypeId: google.maps.MapTypeId.HYBRID , 
     disableDefaultUI: false, 
     mapTypeControl: false, 
     scrollwheel: false, 
     navigationControl: false, 
     mapTypeControl: false, 
     scaleControl: false, 
     draggable: false 
    }; 

    map = new google.maps.Map(document.getElementById("map_canvas"), mapOpts); 
    cathedrals = new google.maps.KmlLayer('http://cathedralcafes.co.uk/kml/', {preserveViewport: true}); 
    map.overlayMapTypes.insertAt(0, ukOverlay);  
    cathedrals.setMap(map); 
} 

    </script>