根据当前窗口中的半径限制 Google 地图上来自 Instagram API 的帖子

2024-04-28

所以我有下面的代码,它是一个 Node.js 应用程序的前端,它使用特定的主题标签提取 Instagram 帖子。现在它在世界各地发布。有没有办法限制帖子的半径,如果可能的话,限制用户当前可见的窗口?我正在使用 Instagram 实时标签订阅。

function initialize() {

    var styles = [{
        "featureType": "landscape",
            "stylers": [{
            "color": "#808080"
        }, {
            "visibility": "simplified"
        }]
    }, {
        "featureType": "administrative",
            "elementType": "labels.text.fill",
            "stylers": [{
            "weight": 0.1
        }, {
            "lightness": 100
        }, {
            "visibility": "off"
        }]
    }, {}];

    var mapOptions = {
        center: new google.maps.LatLng(32.71533, -117.15726),
        zoom: 4,
        scrollwheel: false,
        scaleControl: true,
        styles: styles
    };
    var map = new google.maps.Map(document.getElementById("map-canvas"),
    mapOptions);

    var socket = io.connect();
    socket.on('photo', function (data) {
        var icon = {
            url: data.img, // url
            size: new google.maps.Size(80, 80), // size
        };
        marker = new google.maps.Marker({
            position: new google.maps.LatLng(data.lat, data.long),
            draggable: true,
            animation: google.maps.Animation.DROP,
            icon: icon,
            map: map,
            title: data.caption
        });
    });

    // Try HTML5 geolocation
    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(function (position) {
            var pos = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);

            map.setCenter(pos);
        }, function () {
            handleNoGeolocation(true);
        });
    } else {
        // Browser doesn't support Geolocation
        handleNoGeolocation(false);
    }
}

function handleNoGeolocation(errorFlag) {
    if (errorFlag) {
        var content = 'Error: The Geolocation service failed.';
    } else {
        var content = 'Error: Your browser doesn\'t support geolocation.';
    }

    var options = {
        map: map,
        position: new google.maps.LatLng(60, 105),
        content: content
    };

    var infowindow = new google.maps.InfoWindow(options);
    map.setCenter(options.position);
}

// Finally, call map
google.maps.event.addDomListener(window, 'load', initialize);

据我所知,没有办法将端点(即地理位置和标签)组合到一个搜索中。我认为你有两种选择,这两种选择对你来说都将是相当劳动密集型的,具体取决于主题标签的受欢迎程度以及你的地理位置的半径。我有兴趣看到更多对此的看法。

Option 1

  • 保留您的实时标签订阅
  • 手动处理结果以按每张照片提供的位置信息进行过滤

文档中的示例:

...
"location": {
    "latitude": 37.780885099999999,`
    "id": "514276",
    "longitude": -122.3948632,
    "name": "Instagram"
}
...

Pros:

  • 您已经订阅了标签。
  • 您不受任何半径的限制

Cons:

  • 弄清楚哪些照片属于您想要的半径听起来相当复杂。

Option 2

  • 创建实时地理订阅
  • 手动处理结果以按每张照片提供的标签信息进行过滤

文档中的示例:

...
        "tags": ["expobar"],
...

Pros:

  • 按标签手动过滤可能会容易得多

Cons:

  • 您的地理订阅的最大半径限制为 5000m

更新的答案:

我认为您对位置和地理位置感到困惑,您在上一条评论中描述的内容(大声思考)是exactly我在选项 2 中试图建议的内容。位置是上传时可以标记照片的地方,例如“星巴克市中心”,在我看来并不是很有用,而地理位置使用纬度、经度和半径,非常适合您想要实现的目标 - 查找并显示近距离拍摄的照片,无论用户身在何处。

查看“地理订阅”部分http://instagram.com/developer/realtime/ http://instagram.com/developer/realtime/

创建地理订阅与标签订阅非常相似,因此不需要花太多时间修改您已经拥有的内容。正如您所猜测的,您只需要使用 JavaScript 库首先获取用户的纬度/经度

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

根据当前窗口中的半径限制 Google 地图上来自 Instagram API 的帖子 的相关文章

随机推荐