1

ジオコーダーと、列XとYが長い緯度を格納するフュージョンテーブルを使用した検索位置半径関数に問題があります。実際、問題はクエリのWHERE条件にあります。デバッグできればありがとうございます。これは私の機能です:

function CP_query() {
  CPsearch = document.getElementById('CP_Input').value;
  geocoder.geocode( { 'address': CPsearch}, function(results, status) {
    if (status == google.maps.GeocoderStatus.OK) {
      mylat = results[0].geometry.location.lat();
      mylon = results[0].geometry.location.lng();
      //alert("lat : " + mylat + "long: " + mylon);
      layer_imm = new google.maps.FusionTablesLayer({
          query: {
              select: 'geometry',
              from: '1ckqpE8ZxVzfgJ5bT-vAkpBwjVANbV-KiNjfScjw',
              where: '6371 * acos( cos( radians(' + mylat + ') ) * cos( radians( Y ) ) * cos( radians( X ) - radians(' + mylon + ') ) + sin( radians(' + mylat + ') ) * sin( radians( Y ) ) ) < 2'
           }
       }); 
       layer_imm.setMap(map);
       map.setCenter(results[0].geometry.location);
       var marker = new google.maps.Marker({
       map: map,
       position: results[0].geometry.location
       });
   } else {
     alert("Geocode was not successful for the following reason: " + status);
   }
 });
}
4

1 に答える 1

1

ST_INTERSECTSを使用する

3218メートルは円の半径です。

query: {
  select:'geometry'
  from:  '1ckqpE8ZxVzfgJ5bT-vAkpBwjVANbV-KiNjfScjw',
  where: 'ST_INTERSECTS(geometry,CIRCLE(LATLNG('+ mylat + ',' + mylon + '), 3218))'
}

実例

于 2012-11-30T04:38:13.323 に答える