0

土地区画レイヤーを含む Google フュージョン テーブルがあります。各区画には ARN 番号が割り当てられます。ARN 番号を入力できる検索ボックスを作成しようとしています。検索ボックスが選択され、うまくいけばその区画にズームします。Java スクリプトは初めてで、検索ボックスが機能しない理由がわかりません。Fusion テーブルには、空間情報を含む「ジオメトリ」列があり、「ARN」列は ARN 番号を含む「数値」フィールドです。これが私のコードです。

 function changeMapl0() {
    var searchString = document.getElementById('search-string-l').value.replace(/'/g,  "\\'");
    layer.setOptions({
       query: {
         select: 'geometry',
         from: 'tableID',
         where: "'ARN' CONTAINS IGNORING CASE '" + searchString + "'"
         }
     });
  }


 <body>
    <div style="margin-top: 10px;">
        <label>Enter Roll Number</label><input type="text" id="search-string-l">
        <input type="button" onclick="changeMapl0()" value="Search">
     </div>
 </body>

どんな助けでも大歓迎です。

ありがとう;

マット

4

1 に答える 1

0

おそらく、このようなことをしたいと思うでしょう。zoom2query 関数を呼び出す必要があります。おそらく、ズーム機能のために区画の重心の緯度と経度を計算したいと思うでしょう。ポイントがないように、マップ上でジオメトリ カラム カラムと呼ぶようにしてください。

function changeMap() {
                var searchString = document.getElementById('search').value.replace("'", "\\'");
                if(searchString == "") {
                    var query="SELECT 'Lat' FROM " + tableid;
                }
                else {
                    var query="SELECT 'Lat' FROM " + tableid + " WHERE 'PARCEL_ID' = '" + searchString + "'";
                }
                // layer.setQuery(query);
                if(searchString == "") {
                    var query="SELECT 'Lat','Long' FROM " + tableid;
                }
                else {
                    var query="SELECT 'Lat','Long' FROM " + tableid + " WHERE 'ARN' = '" + searchString + "'";
                }
                zoom2query(query);
            }
            var infowindow = new google.maps.InfoWindow();
            function zoom2query(query) {
                // zoom and center map on query results
                //set the query using the parameter
document.getElementById("query").innerHTML = query;
                var queryText = encodeURIComponent(query);
                var query = new google.visualization.Query('https://www.google.com/fusiontables/gvizdata?tq='  + queryText);
                //set the callback function
                query.send(zoomTo);
            }
            function zoomTo(response) {
                if (!response) {
                    alert('no response');
                    return;
                }
                if (response.isError()) {
                    alert('Error in query: ' + response.getMessage() + ' ' + response.getDetailedMessage());
                    return;
                } 
                numRows = response.getDataTable().getNumberOfRows();
                numCols = response.getDataTable().getNumberOfColumns();
                var lat = response.getDataTable().getValue(0,0);
                var lng = response.getDataTable().getValue(0,1);
                var zoom_level = 19;
                var location = new google.maps.LatLng(lat,lng);
                map.setCenter(location);
                map.setZoom(zoom_level);
            }

これが私が行ったことの例です。RP番号はありますが、小包にズームし ます https://googledrive.com/host/0B0J_A50xWBAqNHZqVlUxSkNUbWs/Shoshone.html

于 2014-05-27T21:22:55.977 に答える