2011-06-14 5 views
0

J'ai une jolie petite carte personnalisée créée à l'aide de MapTiler et il était très facile de l'obtenir avec GMaps. Les bases des quelques lignes de code nécessaires sont ci-dessous.Couche KML Google Maps V3 sur ImageMapType

J'ai aussi une jolie petite couche KML qui rend bien. Cependant ... pour la vie de moi, je ne peux pas afficher les deux couches ensemble. Dès que le fichier KML reçoit un message de rendu, la couche de carte personnalisée disparaît. Firebug me dit même que mes carreaux personnalisés ne sont même pas demandés! Idéalement, j'ai besoin de la couche KML sur ma couche de carte personnalisée. Cela va montrer où se trouvent quelques repères britanniques. Au fond de mon esprit, je pense aux types de projection et aux conflits, mais quand les deux calques s'affichent correctement sur la carte de base, je suis vraiment laissé dans l'obscurité.

Quelqu'un peut-il me donner des conseils sur les calques KML sur les types de cartes personnalisées dans Google Maps V3?

Merci

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); 
} 

Répondre

0

résolu. Ne sois pas idiot.

<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>