KmlLayer getDefaultViewport() Undefined- Google Maps

KmlLayer getDefaultViewport() Undefined- Google Maps

本文关键字:Google Maps Undefined- getDefaultViewport KmlLayer      更新时间:2023-09-26

感谢您的时间,我希望我能足够清楚地谈论我的小问题。我喜欢使用这样的变量"coor":

var coor = kml.getDefaultViewport().getCenter();

并将此变量用于新的标记位置。问题是:javaScript 返回 Undefined。

这是我的代码:

    function initialisation(){
    var centreCarte = new google.maps.LatLng(liste[0][2], liste[0][3]);
    var optionsCarte = {
        zoom: 7,
        center: centreCarte,
        mapTypeId: google.maps.MapTypeId.ROADMAP}                           
    var maCarte = new google.maps.Map(document.getElementById("EmplacementDeMaCarte"), optionsCarte);
    var i=0,li=liste.length;
    while(i<li){
    var kml = new google.maps.KmlLayer('http://myestory.fr/kml/'+liste[i]                [0].toString()+'.kml',
                        {
                        'preserveViewport': true,
                        'map': maCarte
                        });
    var coor = kml.getDefaultViewport().getCenter();
    var marker = new MarkerWithLabel({
    position: new google.maps.LatLng(coor),
    map: maCarte,
    ... //other options of MarkerWithLabel
    });
    i++;}
    }
    google.maps.event.addDomListener(window, 'load', initialisation);
    </script>
</head>

那么你知道为什么变量"coor"不带任何值吗?还有其他解决方案吗?

谢谢!!

Cz

一个人给了我一些关于我的问题的有用细节。实际上,我必须在循环中使用侦听器,如下所示:

function initialisation(){
    //affectation du résultat de la requète SQL et création des variables
var liste = [<?php echo $liste;?>];
var centreCarte = new google.maps.LatLng(liste[0][2], liste[0][3]);
var optionsCarte = {
    zoom: 7,
    center: centreCarte,
    mapTypeId: google.maps.MapTypeId.ROADMAP}
var maCarte = new google.maps.Map(document.getElementById("EmplacementDeMaCarte"), optionsCarte);
//boucle permettant l'affichage des fichiers KML et la création des MARKER
//en fonction de la liste obtenue lors de la requète SQL
var i=0,li=liste.length;
while(i<li){
    var kml = new google.maps.KmlLayer('http://site.fr/kml/'+liste[i][0].toString()+'.kml', {
            'preserveViewport': true,
            'map': maCarte,
            'valeuri': i
    });
    google.maps.event.addListener(kml, "defaultviewport_changed", 
        function() {
            var marker = new MarkerWithLabel({
                    'position': this.getDefaultViewport().getCenter(),
                    'map': this.getMap(),
                    'draggable': true,
                    'raiseOnDrag': false,
                    'icon': 'http://site.fr/icon/noicon.png',
                    'labelContent': liste[this.valeuri][1],
                    'labelAnchor': new google.maps.Point(27, 12),
                    'labelClass': "labels",
                    'labelStyle': {opacity: 1}  
            });
        });
    i++;}
}

所以现在,我可以在循环中加载的所有 KML 的中心显示仅带有标签的标记(noicon.png是 1px*1px 图像)。

++

Cz