0

谢谢你的时间,我希望我能清楚地谈论我的小问题。我想使用这样的变量“coor”:

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

并将此变量用于新的 MARKER 位置。问题是:javaScript 返回未定义。

这是我的代码:

    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”不带任何值吗?还有其他解决方案吗?

谢谢!!

4

1 回答 1

2

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

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 的中心仅显示带有标签的 MARKER(noicon.png 为 1px*1px 图像)。

++

于 2012-05-29T16:13:56.000 回答