【问题标题】:How to select a range for my drop down menus with Fusion Layer?如何使用 Fusion Layer 为我的下拉菜单选择范围?
【发布时间】:2014-05-06 21:52:46
【问题描述】:

我有一个 Google Fusion 图层,我想根据我在下拉菜单中的选择突出显示其上的区域。

我试图显示与他们每年报告的犯罪率相关的区域,因此我有一个如下所示的下拉菜单:

select id="filterOnValue" onchange="highlightArea(this.value);">
<option value="--Select--">--Select--</option>
<option value="50">Very Low</option>
<option value="100">Low</option>
<option value="200">Medium</option>
<option value="500">High</option>
<option value="1807">Very High</option>
</select>

我的融合层查询如下所示:

function highlightArea() {
var whereClause;
var searchCrime = document.getElementById('filterOnValue').value.replace(/'/g, "\\'");

// Highlight the map if a selection from the crime dropdown filter is chosen      
if (searchCrime != '--Select--') {
    whereClause = "'Reported Crimes' <= '" + searchCrime + "'";

    layer.setOptions({
        query: {
            select: "col40>>0",
            from: "1S0FCMn-wGr2zy6SrAnre6HNF_KghfZmObb4sNLc",
            where: whereClause
        }

    });

  }
}

由于我的查询中的

这是我的代码的一个 jsfiddle(地图由于某种原因未在此处加载):http://jsfiddle.net/QxJ9R/4/

我将如何更改我的查询以反映我想要它做什么?

【问题讨论】:

    标签: javascript html google-maps-api-3 google-fusion-tables


    【解决方案1】:

    要创建范围,您需要这样的 where 子句:

    'Reported Crimes' >= 100 AND 'Reported Crimes' < 200
    

    这将为您提供'Reported Crimes' 大于或等于 100 但同时小于 200 => 范围 100-200 的所有记录。

    forked your jsFiddle to show you a possible solution。我移动了 JavaScript 代码中的所有范围以防止逻辑重复(因此我将选择中的数字替换为 lowhigh 之类的标识符):

    HTML:

    <div id="map-canvas" style="height: 400px; width: 400px;"></div>
    <label>Yearly Reported Crimes</label>
    <select id="filterOnValue" onchange="highlightArea(this.value);">
        <option value="--Select--">--Select--</option>
        <option value="vlow">Very Low</option>
        <option value="low">Low</option>
        <option value="med">Medium</option>
        <option value="high">High</option>
        <option value="vhigh">Very High</option>
    </select>
    

    JavaScript:

    function highlightArea() {
        var whereClause;
        var searchCrime = document.getElementById('filterOnValue').value.replace(/'/g, "\\'");
    
       var whereRanges = {
            'vlow': "'Reported Crimes' <= '" + 50 + "'",
            'low': "'Reported Crimes' >= '" + 50 + "' AND 'Reported Crimes' < '" + 100 + "'",
            'med': "'Reported Crimes' >= '" + 100 + "' AND 'Reported Crimes' < '" + 200 + "'",
            'high': "'Reported Crimes' >= '" + 200 + "' AND 'Reported Crimes' < '" + 500 + "'",
            'vhigh': "'Reported Crimes' >= '" + 500 + "'"
       };
    
        // Highlight the map if a selection from the crime dropdown filter is chosen      
        if (searchCrime != '--Select--') {
            whereClause = whereRanges[searchCrime];
    
            layer.setOptions({
                query: {
                    select: "col40>>0",
                    from: "1S0FCMn-wGr2zy6SrAnre6HNF_KghfZmObb4sNLc",
                    where: whereClause
                }
    
            });
    
        }
    }
    

    【讨论】:

    • 非常感谢,太好了!我曾尝试将自己的逻辑更改为类似的东西,但使用的是 && 而不是 AND。应该查找如何在 JavaSCript 中执行该操作。您的解决方案很棒,给选择值一个标识符是个好主意,再次感谢,我真的很感激。
    • AND 实际上是 Fusion Tables syntax 而不是 JavaScript。
    猜你喜欢
    • 1970-01-01
    • 2020-10-02
    • 2014-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多