Google地图,Fusion表格和地理定位

时间:2013-04-24 15:29:45

标签: google-maps-api-3 google-fusion-tables

我在将ST_DISTANCE中的变量设置为变量而不是数字时遇到问题。我的目标是按距离到客户端对融合表条目进行排序,并且只显示最接近的3。

(另外,我希望窗口缩小并包含这些点以及指向客户所在的位置。任何提示或指向某些资源的链接都将受到赞赏。)

以下是Google地图,Fusion表格和地理位置代码:

<script type="text/javascript">
(function() {   
    if(!!navigator.geolocation) {       
        var map;
        var mapOptions = {
            zoom: 15,
            mapTypeId: google.maps.MapTypeId.ROADMAP,
        };          
        navigator.geolocation.getCurrentPosition(function(position) {           
            var geolocate = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
            map.setCenter(geolocate);           
        });
        map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions)

        layer = new google.maps.FusionTablesLayer({
            map: map,
            heatmap: { enabled: false },
            query: {
                select: "col1",
                from: "1JaRXQJ_YJch5Ua6cfZCBpaUEKRnd2jIcHVmcODY",
                orderBy: 'ST_DISTANCE(col1, LATLNG("geolocate"))',
                limit: 3,
                where: ""
            },
            options: {
                styleId: 2,
                templateId: 2
            }
        });

    } else {
    map = new google.maps.Map(document.getElementById('map-canvas'), {
            center: new google.maps.LatLng(39.918487877955485, -98.30599773437501),
            zoom: 15,
            mapTypeId: google.maps.MapTypeId.ROADMAP
        });     
        layer = new google.maps.FusionTablesLayer({
            map: map,
            heatmap: { enabled: false },
            query: {
                select: "col1",
                from: "1JaRXQJ_YJch5Ua6cfZCBpaUEKRnd2jIcHVmcODY",
                where: ""
            },
            options: {
                styleId: 2,
                templateId: 2
            }

        });     
    }

})();
google.maps.event.addDomListener(window, 'load', initialize);
</script>

我知道这很乱。我不知道javascript。

我想知道如何将变量“geolocate”设置为:

navigator.geolocation.getCurrentPosition(function(position) {           
        var geolocate = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
        map.setCenter(geolocate);           
});

进入LATLNG地点:

var layer = new google.maps.FusionTablesLayer({
    query: {
        select: 'Address',
        from: '15UY2pgiz8sRkq37p2TaJd64U7M_2HDVqHT3Quw',
        orderBy: 'ST_DISTANCE(Address, LATLNG(37.4,-122.1))',
        limit: 3
}

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

这只是一个基本的javascript问题...

使地理定位全局化,如var map;

var map;
var geolocate;

删除现有地理定位前面的var。

然后删除使用geolocate的引号。

orderBy: 'ST_DISTANCE(col1, LATLNG(' + geolocate + ') )',