2017-06-03 52 views
0

Openlayersツールを使用して、ワードプレスでマップで選択したレイヤーを表示するためのレイヤーのドロップダウンリストを挿入しようとしています。私はdrpdownのリストから選択しようとしたとき、しかし、私はこのエラーを取得:Uncaught ReferenceError:onchange関数が定義されていません(wordpress)

Uncaught ReferenceError: update is not defined 
    at HTMLSelectElement.onchange ((index):226) 

マイスクリプト:

var geojsonFormat = new ol.format.GeoJSON(); 

var vectorSource = new ol.source.Vector({ 
    loader: function(extent, resolution, projection) { 
    var url = "http://localhost:8080/geoserver/opengeo/ows?service=WFS&" + 
     "version=2.0.0&request=GetFeature&typename=opengeo:arbousiers0&CQL_FILTER=code_espec='Arteherb'"+ 
     "&outputFormat=text/javascript&format_options=callback:loadFeatures"+ 
     "&srsname=EPSG:3857"; 

    $.ajax({url: url, dataType: 'jsonp', jsonp: false}); 
    }, 
    strategy: ol.loadingstrategy.tile(ol.tilegrid.createXYZ({ 
    maxZoom: 19 

    })) 

}); 
window.loadFeatures = function(response) { 
    vectorSource.addFeatures(geojsonFormat.readFeatures(response)); 
}; 

function update() { 
    vectorSource.clear(true); 
}; 

    function getRandomColor() { 
     var letters = 'ABCDEF'; 
     var color = '#'; 
     for (var i = 0; i < 6; i++) { 
      color += letters[Math.floor(Math.random() * 16)]; 
     } 
     return color; 
    } 

var map = new ol.Map({ 
    layers: [ 
    new ol.layer.Vector({ 
    source: vectorSource, 
    style: new ol.style.Style({ 
    stroke: new ol.style.Stroke({ 
     color: 'rgba(0, 0, 255, 0.0)', 
     width: 0.3 
    }), 
    fill : new ol.style.Fill({ 
    color: getRandomColor() 
    }) 
    }) 
}) 
    ], 
    target: document.getElementById('mapid'), 
    view: new ol.View({ 
    center: [-1095791.453557, 3422374.879112], 
    maxZoom: 19, 
    zoom: 5 
    }) 
}); 

私のDropDownListコード:

<select class='Nom' name="pam" id="pam" onchange="update()"> 
<option value="">--- Select Layer ---</option> 
[insert_php] 
$conn_string = "host=localhost port=5432 dbname=postgres user=postgres password="; 
$conn = pg_connect($conn_string); 


$sql = pg_query($conn, "SELECT * FROM especes"); 

while($ligne_liste=pg_fetch_array($sql)) { 
    echo '<option value="'.$ligne_liste['nom'].'">'.$ligne_liste['nom']."</option>\n"; 
} 
echo '</select>'; 
[/insert_php] 

、その後、私はここで答えを追いましたonchageイベントをfunctions.phpに呼び出す: https://wordpress.stackexchange.com/questions/248026/add-onchange-to-select-in-a-wp-form

function addAttributeToDropdown($html_content){ 
    $html_content = str_replace('<select','<select onchange="update()"',$html_content); 
    return $html_content; 
} 

add_filter('wp_dropdown_cats','addAttributeToDropdown'); 

答えて

1

wordpressがスクリプトをIIFEとして実行している可能性があります。したがって、ウィンドウオブジェクトにイベントハンドラを添付してください。

window.update = function() { 
    vectorSource.clear(true); 
} 
関連する問題