2015-10-11 67 views
-1

我在显示地图上的自定义标记时遇到了一些麻烦,为每个位置显示不同的标记我从包含位置的数组中获取图像,例如,这里是我的代码:Javascript,从数组中读取变量

var examplearray = [ 
    [43, 52.81421, 5.935412, 'image3'] 
    ]; 

    var image1 = 'mapsicons/alpha.png'; 
    var image2 = 'mapsicons/beta.png'; 
    var image3 = 'mapsicons/charlie.png'; 


    for (var i = 0; i < examplearray.length; i++) { 
     var samplemarker = examplearray [i] 
     var marker = new google.maps.Marker({ 
      position: new google.maps.LatLng (samplemarker[1], samplemarker[2]), 
      map: map, 
      icon: samplemarker[3], 
      zIndex: samplemarker[0] 
     }); 
    } 

我不能看怎么回事错在这里,但它不显示图像,仅仅是明确的,图像是在正确的位置和他们做工作,如果我改变“samplemarker [3] “例如,image1图标确实显示正确,同样用于将”image3“从数组更改为图像位置(mapsicons/charlie.png),看起来从阵列数据到可变数据的转换不起作用。我希望你能提前帮助我,帮助我!

回答

0

两个选项:

  1. 以图标的网址添加到阵列。代替:

    var examplearray = [ [43,52.81421,5.935412,'image3'] ];

使用:

var examplearray = [ 
    [43, 52.81421, 5.935412, 'mapsicons/charlie.png'] 
]; 

Proof of concept fiddle

  • 参考阵列中的变量,而不是使用具有其名称的字符串:
  • 而不是:

    var examplearray = [ 
        [43, 52.81421, 5.935412, 'image3'] 
    ]; 
    

    使用:

    var examplearray = [ 
        [43, 52.81421, 5.935412, image3] 
    ]; 
    

    proof of concept fiddle

    代码段(选项1):

    function initialize() { 
     
        var map = new google.maps.Map(
     
        document.getElementById("map_canvas"), { 
     
         center: new google.maps.LatLng(37.4419, -122.1419), 
     
         zoom: 13, 
     
         mapTypeId: google.maps.MapTypeId.ROADMAP 
     
        }); 
     
        var examplearray = [ 
     
        [43, 52.81421, 5.935412, 'http://maps.google.com/mapfiles/ms/micons/yellow.png'] 
     
        ]; 
     
    
     
        var bounds = new google.maps.LatLngBounds(); 
     
        for (var i = 0; i < examplearray.length; i++) { 
     
        var samplemarker = examplearray[i]; 
     
        var marker = new google.maps.Marker({ 
     
         position: new google.maps.LatLng(samplemarker[1], samplemarker[2]), 
     
         map: map, 
     
         icon: samplemarker[3], 
     
         zIndex: samplemarker[0] 
     
        }); 
     
        bounds.extend(marker.getPosition()); 
     
        } 
     
        map.fitBounds(bounds); 
     
    } 
     
    google.maps.event.addDomListener(window, "load", initialize);
    html, 
     
    body, 
     
    #map_canvas { 
     
        height: 100%; 
     
        width: 100%; 
     
        margin: 0px; 
     
        padding: 0px 
     
    }
    <script src="https://maps.googleapis.com/maps/api/js"></script> 
     
    <div id="map_canvas"></div>

    代码段(选项2):

    function initialize() { 
     
        var map = new google.maps.Map(
     
        document.getElementById("map_canvas"), { 
     
         center: new google.maps.LatLng(37.4419, -122.1419), 
     
         zoom: 13, 
     
         mapTypeId: google.maps.MapTypeId.ROADMAP 
     
        }); 
     
        var image1 = 'http://maps.google.com/mapfiles/ms/micons/blue.png'; 
     
        var image2 = 'http://maps.google.com/mapfiles/ms/micons/green.png'; 
     
        var image3 = 'http://maps.google.com/mapfiles/ms/micons/yellow.png'; 
     
        var examplearray = [ 
     
        [43, 52.81421, 5.935412, image3] 
     
        ]; 
     
    
     
        var bounds = new google.maps.LatLngBounds(); 
     
        for (var i = 0; i < examplearray.length; i++) { 
     
        var samplemarker = examplearray[i]; 
     
        var marker = new google.maps.Marker({ 
     
         position: new google.maps.LatLng(samplemarker[1], samplemarker[2]), 
     
         map: map, 
     
         icon: samplemarker[3], 
     
         zIndex: samplemarker[0] 
     
        }); 
     
        bounds.extend(marker.getPosition()); 
     
        } 
     
        map.fitBounds(bounds); 
     
    } 
     
    google.maps.event.addDomListener(window, "load", initialize);
    html, 
     
    body, 
     
    #map_canvas { 
     
        height: 100%; 
     
        width: 100%; 
     
        margin: 0px; 
     
        padding: 0px 
     
    }
    <script src="https://maps.googleapis.com/maps/api/js"></script> 
     
    <div id="map_canvas"></div>

    0

    花了我一些时间来理解这个想法。如果将icon: samplemarker[3]替换为icon: this[samplemarker[3]],会发生什么情况?其他

    +0

    当使用[samplemarker [3]]似乎跳过整个图标功能,只是示出了标准的标记。 – NielsWM