2013-09-11 4 views
0

Я хочу, чтобы переключить стили многоугольникКак переключить цвет отборных полигонов на Fusion Tables слой

Использование FT здесь: https://www.google.com/fusiontables/data?docid=1jgWYtlqGSPzlIa-is8wl1cZkVIWEm_89rWUwqFU

и мастера таблиц быстрого фьюжн http://fusion-tables-api-samples.googlecode.com/svn/trunk/FusionTablesLayerWizard/src/index.html

I подумал, что это будет что-то вроде (где «Почтовый индекс» является меткой столбца в FT)

google.maps.event.addListener(layer_0, 'click', function(e) { 
    layer_0.set("styles", [{ 
     where: "'Postcode district' = " + e.row['Postcode district'].value, 
     polygonOptions: { 
     fillColor: "#000000" 
     } 
    }]); 
}); 

, но это просто устанавливает для каждого отдельного многоугольника черный.

Спасибо.

ответ

1

Значение Postcode disctrict является строкой, то он должен быть заключен в одинарных кавычках:

where: "'Postcode district' = '" + e.row['Postcode district'].value + "'", 

, относящийся к дополнительному вопросу (сохранение выделенного состояния полигона, пока не будет нажат еще раз):

вы должны сохранить статус щелкнули полигона где (например, в объект или массив), то вы будете иметь возможность:

  1. переключение состояния полигона
  2. создать коллекцию всех «активных» полигонов и использовать эту коллекцию в запросе для IN() -условию

образца:

//selected will be populated on layer-cllick with the postcode and 
    //a boolean (true when the area is highlighted, otherwise false) 
    selected={}; 

    google.maps.event.addListener(layer_0, 'click', function(e) { 
    var val=e.row['Postcode district'].value, 
     vals=[]; 

    //update the selected-object 
    selected[val]=(!selected[val])?true:false; 

    //populate the vals-array with the selected postcodes 
    for(var k in selected){ 
     if(selected[k]){ 
     vals.push(k); 
     } 
    } 

    layer_0.set("styles", [{ 
     where: "'Postcode district' IN('"+vals.join("','")+"')", 
     polygonOptions: { 
     fillColor: "#000000" 
     } 
    }]); 
    }); 

Demo: http://jsfiddle.net/doktormolle/ZffgF/

+0

Большое спасибо за это - я был удивлен тем, что он сбрасывает все остальные полигоны по умолчанию, красный - я надеялся, что он будет одним щелчком меняет цвет щелкнутого полигона, и если бы щелкнул другой полигон, то оба были бы «черными» - щелкните черный полигон и он вернется к исходному цвету. – JPMox

+0

Это возможно, см. Мой отредактированный ответ. –

+0

Большое спасибо Dr! Я закончил использовать массив (не был уверен, был ли какой-либо встроенный метод), но ваш код был намного опрятным! – JPMox

Смежные вопросы