2013-11-28 62 views
0

我正在使用Google Maps API。我想爲某些國家分配顏色。多個FusionTables查詢不起作用

要做到這一點,我必須讓每個國家的邊界​​能夠繪製多邊形。所以,我正在使用FusionTables。對於每個國家,我都會執行FusionTables查詢來獲取圖層,然後設置地圖。這裏我做了什麼。

var countryArray = new Array(); 
var nodeArray = new Array(); 
var companyArray = new Array(); 
var locationsArray = new Array(); 

function plotMarker() { 
var rootMarker = locationsArray[companyArray.indexOf(rootCompany)]; 
var latlng = new google.maps.LatLng(0, 0); 
var myStyle = [ 
{ 
    featureType: "all", 
    elementType: "labels", 
    stylers: [ 
    { 
     visibility: "off" } 
     ] 
    } 
    ]; 

    map = new google.maps.Map(document.getElementById("map_canvas"), { 
     mapTypeControlOptions: { 
      mapTypeIds: ['mystyle', google.maps.MapTypeId.ROADMAP, google.maps.MapTypeId.TERRAIN] 
     }, 
     center: latlng, 
     zoom: 2, 
     mapTypeId: 'mystyle' 
    }); 

    map.mapTypes.set('mystyle', new google.maps.StyledMapType(myStyle, { name: 'My Style' })); 


    for (var i = 0; i < locationsArray.length; i++) { 
     if (locationsArray[i] != undefined) { 
      var latitude = locationsArray[i].lat() + verDiff; 
      var longitude = locationsArray[i].lng() + horDiff; 
      var newLatlng = new google.maps.LatLng(latitude, longitude); 

      var ftoptions = { 
       query: { 
        from: '419167', 
        select: 'kml_4326', 
        where: "sovereignt = '"+countryArray[i]+"'" 
       }, 
       suppressInfoWindows:true, 
       styles: [ 
       { 
       polygonOptions: { 
        fillColor:'#0040FF', 
        fillOpacity:0.7 
       } 
      } 
      ] 
     }; 

     var layer = new google.maps.FusionTablesLayer(ftoptions); 
     layer.setMap(map); 
    } 
} 

}

但是,爲什麼風格只爲第一個國家工作嗎?我想知道所有國家的查詢是否都沒有成功執行,或者只是這種風格有問題?任何幫助將不勝感激。

回答

0

地圖只能有1個樣式的FusionTablesLayer,其他圖層的樣式將被忽略。

創建一個單一的FusionTablesLayer會,並通過IN() -condition

+0

由於選擇多個sovereignt的,是能夠分配不同的顏色,每一個國家? –

+0

通過圖層設置僅適用於5個國家(僅適用於最多5種風格)。但是,您可以通過模板**定義[**不同顏色](https://support.google.com/fusiontables/answer/2681556?hl=zh-CN)(基於列值) –