Bing Maps API请求返回未捕获的SyntaxError:意外的令牌:

我收到一个错误Uncaught SyntaxError:意外的令牌:(dev.virtualearth.net/:1)

这是我的JavaScript。

function getLocation() {
    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(showPosition);
    } else {
        alert("Geolocation is not supported by this browswer or not enabled.");
    }
}

function showPosition(position) {
    $.ajax({
        url: 'http://dev.virtualearth.net/REST/v1/Locations/',
        dataType: 'jsonp',
        data: {
            q: position.coords.latitude + ',' + position.coords.longitude,
            key: '***'
        }
    }).then(function(data) {
        //alert("Latitude: " + position.coords.latitude + "<br /> Longitude: " + position.coords.longitude +
        //"<br /> Province: " + data.resourceSets.resources[0].address.locality);
        console.log(data.toString());
    });


}

返回的json是有效的,但不知道错误发生在哪里。


您的查询有几个问题:

  • 坐标不应该像你这样做传递给查询参数。 这不会将您想要的地点解析为您的位置,就像我想要的那样。 坐标应该是URL的一部分,如... / Location / latitude,longitude?key =
  • 除了dataType之外,还要设置ajax方法的jsonp参数。
  • 使用属于Bing Maps API一部分的GeoLocationProvider类,而不是使用导航器。 Navigator类在旧版浏览器上不受支持,但是,一些旧版浏览器确实有其他方法来获取用户位置。 GeoLocationProvider类为你包装所有这些不同的方法。 这也让您可以选择显示精确度圆圈并根据需要设置地图视图。
  • 使用会话密钥与REST服务,而不是Bing地图密钥。 这将使此服务请求成为不可计费的交易。
  • 以下是一个代码示例,可让您获取用户位置并反向对其进行地理编码:

    <!DOCTYPE html>
    <html>
    <head>
      <title></title>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    
      <script type="text/javascript" src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>
      <script type="text/javascript" src="https://code.jquery.com/jquery-1.11.1.min.js"></script>
    
      <script type="text/javascript">
        var map, sessionKey;
    
        function GetMap()
        {   
            map = new Microsoft.Maps.Map(document.getElementById("myMap"), { 
                credentials: "YOUR_BING_MAPS_KEY"
            });
    
            map.getCredentials(function(c){
                sessionKey = c;
            });
        }
    
        function getLocation() {
            var geoLocationProvider = new Microsoft.Maps.GeoLocationProvider(map);  
            geoLocationProvider.getCurrentPosition({ 
                showAccuracyCirle: false, 
                updateMapView: false,
                successCallback: showPosition
            });
        }
    
        function showPosition(position) {
    
            $.ajax({
                url: 'http://dev.virtualearth.net/REST/v1/Locations/' + position.center.latitude + ',' + position.center.longitude,
                dataType: "jsonp",
                jsonp: "jsonp",
                data: {
                    key:sessionKey
                },
                success: function (result) {
                    if (result &&
                        result.resourceSets &&
                        result.resourceSets.length > 0 &&
                        result.resourceSets[0].resources &&
                        result.resourceSets[0].resources.length > 0) {
                        alert(result.resourceSets[0].resources[0].address.formattedAddress);
                    }else{
                        alert("No Results Found");
                    }            
                },
                error: function (e) {
                    alert(e.statusText);
                }
            });
        }
        </script>   
    </head>
    <body onload="GetMap();">
        <div id='myMap' style="position:relative;with:800px;height:600px;"></div><br/>
        <input type="button" onclick="getLocation()" value="test"/>
    </body>
    </html>
    
    链接地址: http://www.djcxy.com/p/8027.html

    上一篇: Bing Maps API request returning Uncaught SyntaxError: Unexpected token :

    下一篇: Uncaught SyntaxError: Unexpected token , in refCreateUser in firebase