2011-01-29 4 views
0

Я пытаюсь отобразить точки из таблицы Google Fusion, которая отображает их на основе геокодированного события. Событие центрирует карту, отображает маркер, но я хотел бы, чтобы он сделал новый выбор в таблице на основе нового центра карты и фиксированного радиуса. Моя попытка - передать переменную в пространственный запрос, но я не уверен, куда ее поместить, или если я позвоню правильно.Использование переменной для позиции LatLng в SQL expr для таблиц Google Fusion

В этом случае было бы здорово даже использовать событие onClick для запуска нового запроса, но это то же самое проблема.

Спасибо заранее ... Раф

<!DOCTYPE html> 
<html> 
<head> 
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> 
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/> 

<title>Selected Records from Google Fusion Table based on Geocoded Location</title> 

<style> 
    body { font-family: Arial, sans-serif; } 
    #map_canvas { height: 600px; width:700px; } 
</style> 

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> 
<script type="text/javascript"> 

var layer; 
var geocoder; 
var map; 
var tableid = 411675; 

// initialize the map ===================== 
function initialize() { 

    geocoder = new google.maps.Geocoder(); 
    var latlng = new google.maps.LatLng(45.526, -122.6684); 
    var myOptions = { 
      zoom: 8, 
      center: latlng, 
      mapTypeId: google.maps.MapTypeId.ROADMAP 
     } 
    map = new google.maps.Map(document.getElementById('map_canvas'), myOptions); 
    layer = new google.maps.FusionTablesLayer(tableid); 
    layer.setMap(map);  
} 

// operates geocoder ===================== 
function codeAddress() { 
    var gcAddress = document.getElementById("gcAddress").value; 
    geocoder.geocode({ 'address': gcAddress}, function(results, status) { 
     if (status == google.maps.GeocoderStatus.OK) { 
     map.setCenter(results[0].geometry.location); 
     var marker = new google.maps.Marker({ 
      map: map, 
      position: results[0].geometry.location 
     }); 
       layer.setQuery("SELECT Address FROM " + tableid + " WHERE ST_INTERSECTS(Address, CIRCLE(LATLNG(" + position + "), 5000))"); 
     } else { 
     alert("Geocode was not successful for the following reason: " + status); 
     } 
    }); 
} 
</script> 
</head> 

<body onload="initialize();"> 
    <div> 
     <input id="gcAddress" type="textbox" value="Hillsboro, OR"> 
     <input type="button" value="Geocode" onclick="codeAddress()"> 
    </div> 
    <div id="map_canvas"></div> 
</body> 

ответ

0

Я думаю, что вы, возможно, были ваше выражение немного неправильно.

var query = "SELECT Address FROM " + tableid + " WHERE ST_INTERSECTS(Address, CIRCLE(LATLNG" + marker.position + ", 20000))"; 

Я обновил положение, чтобы прочитать marker.position, удалил скобки, поскольку он приходит с его собственным. Затем я расширил радиус до 20000 для целей тестирования.

Это сработало для меня. Если вам необходимо проверить запросы, которые можно использовать, например, такие, как

http://kh-samples.googlecode.com/svn/trunk/talks/samples/fusiontableslayer.html

В качестве основы для тестирования (только сохранить и изменить его для вашей таблицы), мы надеемся, поможет сверток :)

Надежда это помогает.

Мэтт

+0

Ha! Красивый. Это работает. Новый сайт также дает мне отличные новые идеи. Благодаря тонну! – geografa