【问题标题】:Function use value in link when available可用时链接中的函数使用值
【发布时间】:2014-05-06 09:11:56
【问题描述】:

我不确定如何正确解释这一点,但我基本上想通过 Google API 在地图上显示标记,并在其上提供指向该位置的路线的链接。但是,目前它仅在用户允许跟踪其位置时才有效。

我想要做的是基本上在两种情况下都有这些标记,用户允许和不允许跟踪他们的位置,但只会更改链接。

因此,如果用户允许跟踪他们的位置,则链接将是

var reittiohjeet = "https://www.google.fi/maps/dir/"+pos+"/"+osoite;

如果用户拒绝跟踪他们的位置,链接将是

var reittiohjeet2 = "https://www.google.fi/maps/dir/current+location/"+osoite;

我尝试创建将在 if(navigator.geolocation) 的 else 子句中运行的替代函数,但这似乎根本没有做任何事情。

function initialize() {
    var mapOptions =  {
        center: new google.maps.LatLng(60.174,24.927),
        zoom: 8
    };
    var map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions);

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

            // Luo marker
            var image = 'user-location.png';
            var userMarker = new google.maps.Marker({
                position: pos,
                map: map,
                icon: image
            });

            map.setCenter(pos);

            setMarkers(map, shops, pos);
        }, function() {
            handleNoGeolocation(true);
        });
    } else {
        handleNoGeolocation(false);
    }
}

function setMarkers(map, locations, pos) {

    for (var i = 0; i < locations.length; i++) {
        var shop = locations[i];
        var myLatLng = new google.maps.LatLng(shop[1], shop[2]);
        var nimi = shop[0];
        var osoite = shop[5];
        var puhelinnumero = shop[3];
        var verkkosivu = shop[4];
        var reittiohjeet = "https://www.google.fi/maps/dir/"+pos+"/"+osoite;
        var content = "<div class='content'><h3>"+nimi+"</h3><strong>Osoite:</strong> "+osoite+"<br /><strong>Puhelinnumero:</strong> "+puhelinnumero+"<br /><strong>Verkkosivu:</strong> <a href='"+verkkosivu+"' target='_blank'>"+verkkosivu+"</a><br /><br /><a href='"+reittiohjeet+"'>Reittiohjeet</a></div>";
        var marker = new google.maps.Marker({
            position: myLatLng,
            map: map,
            title: shop[0]
        });

        var infowindow = new google.maps.InfoWindow()

        google.maps.event.addListener(marker,'click', (function(marker,content,infowindow){ 
            return function() {
                infowindow.setContent(content);
                infowindow.open(map,marker);
            };
        })(marker,content,infowindow));  
    }
}

【问题讨论】:

    标签: javascript google-maps google-maps-api-3 google-api


    【解决方案1】:

    else-clause 中的语句只会在浏览器不支持地理定位时执行。

    当用户拒绝访问时,定义为 getCurrentPosition 的第二个参数的函数将被执行。

    注意: 在 Firefox 中这将无法正常工作,请参阅:Firefox 11 and GeoLocation denial callback

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-10
      • 2015-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-23
      • 2015-07-14
      • 1970-01-01
      相关资源
      最近更新 更多