0

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

(此外,我希望窗口缩小并包含这些点以及指向客户所在的位置。任何提示或指向某些资源的链接将不胜感激)。

这是谷歌地图、融合表和地理位置代码:

<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。

我想知道如何放置由以下创建的变量“gelocate”:

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
}

任何帮助是极大的赞赏。

4

1 回答 1

0

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

使 geolocate 全球化,如 var map;

var map;
var geolocate;

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

然后删除您使用 geolocate 的引号。

orderBy: 'ST_DISTANCE(col1, LATLNG(' + geolocate + ') )',
于 2013-04-25T14:35:57.740 回答