【问题标题】:Google Maps, Fusion Tables, and GeolocationGoogle 地图、Fusion Tables 和地理位置
【发布时间】:2013-04-24 15:29:44
【问题描述】:

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

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

这是 Google 地图、Fusion Tables 和地理位置代码:

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

非常感谢任何帮助。

【问题讨论】:

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


    【解决方案1】:

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

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

    var map;
    var geolocate;
    

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

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

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

    【讨论】:

    • 谢谢!这帮助很大。问题是试图添加更多功能现在一切都坏了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多