0

フュージョン テーブルのいくつかの関数を作成するのにかなり苦労しています。ここに 2 つのテーブルがあります。

ポイント

小包

私はいくつかの関数を作成しようとしています:

1)ドロップダウンメニューを使用してポイントレイヤーを選択し、ID番号で選択できるようにしたい。

2) ポイントを選択すると、そのポイントから 1 km 以内にある区画を見つけるようフュージョン テーブルに指示できる関数を作成したいと考えています。距離を変更できるとよいので、たとえば 5 km の検索を行うことができます。

これが私のコードです:

<!DOCTYPE html>
<html>
  <head>
  <style>
    #map-canvas { width:500px; height:400px; }
  </style>
  <script type="text/javascript"
    src="http://maps.google.com/maps/api/js?sensor=false">
  </script>
  <script type="text/javascript">
    var map;
    var layerl0;
    var layerl1;
    function initialize() {
      map = new google.maps.Map(document.getElementById('map-canvas'), {
        center: new google.maps.LatLng(43.94255650099583, -79.53326251471042),
        zoom: 13,
        mapTypeId: google.maps.MapTypeId.ROADMAP
      });
      layerl0 = new google.maps.FusionTablesLayer({
        query: {
          select: "'col2'",
          from: '1-6QDLUk0Xw7weaB0GP1nmgwvXUuaXJCxWEYbO8E'
        },
        map: map,
        styleId: -1,
        templateId: -1
      });
      layerl1 = new google.maps.FusionTablesLayer({
        query: {
          select: "'col2'",
          from: '1BdIN39m70Vo6Sq0Y5lm1s_4Crh1CZpSwRbYMfnM'
        },
        map: map,
        styleId: -1,
        templateId: -1
      });
    }
    function changeMapl0() {
      var searchString = document.getElementById('search-string-l0').value.replace(/'/g, "\\'");
      layerl0.setOptions({
        query: {
          select: "'col2'",
          from: '1-6QDLUk0Xw7weaB0GP1nmgwvXUuaXJCxWEYbO8E',
          where: "'description' CONTAINS IGNORING CASE '" + searchString + "'"
        }
      });
    }
    function changeMapl1() {
      var searchString = document.getElementById('search-string-l1').value.replace(/'/g, "\\'");
      layerl1.setOptions({
        query: {
          select: "'col2'",
          from: '1BdIN39m70Vo6Sq0Y5lm1s_4Crh1CZpSwRbYMfnM',
          where: "'description' = '" + searchString + "'"
        }
      });
    }
    google.maps.event.addDomListener(window, 'load', initialize);
  </script>
  </head>
  <body>
    <div id="map-canvas"></div>
    <div style="margin-top: 10px;">
      <label>Zone: </label><input type="text" id="search-string-l0">
      <input type="button" onclick="changeMapl0()" value="Search">
    </div>
    <div style="margin-top: 10px;">
      <label>SPP_ID: </label>
      <select id="search-string-l1" onchange="changeMapl1(this.value);">
        <option value="">--Select--</option>
        <option value="<html xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:msxsl="urn:schemas-microsoft-com:xslt">

<head>

<META http-equiv="Content-Type" content="text/html">

<meta http-equiv="content-type" content="text/html; charset=UTF-8">

</head>

<body style=

ご協力いただきありがとうございます!

4

2 に答える 2

0

現在、Fusion Tables は、あるテーブルの場所列を使用して別のテーブルで空間クエリを実行することをサポートしていません (少なくとも、この可能性については知りません)。ST_INTERSECTSただし、ポイントをジオメトリに変換してから、区画テーブルで空間クエリを実行することで、目的を達成できます。

手順:

  • ユーザーがクリックしたポイントから緯度/経度の値を取得します。Fusion Table から、またはマップのクリック イベントから直接:

    GEvent.addListener(map, "click", function(overlay, latLng) {
        var lat = latLng.lat(),
            lng = latLng.lng();
    });
    

これは、地図から緯度/経度の値を取得する完全な例です。

  • この緯度/経度の値を使用して、区画画層のクエリを更新します

     layer.setOptions({
         query: {
             select: location
             from: 
             where: 'ST_INTERSECTS(circle(latlng(lat,lng),radius), location) 
         }
     });
    

Fusion Tablesの円の例を参照してください。

于 2012-11-28T11:31:19.430 に答える