首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在必应地图V8中创建圆、折线或精度圆

如何在必应地图V8中创建圆、折线或精度圆
EN

Stack Overflow用户
提问于 2016-05-26 14:38:29
回答 1查看 771关注 0票数 0

我已经在必应地图v7中使用了精确圆,但是当我使用必应地图v8时,它不能工作。

如何在必应地图V8中创建圆、折线或精度圆

EN

回答 1

Stack Overflow用户

发布于 2016-05-28 01:18:27

必应地图V8开发工具包不再有GeoLocationProvider类。这是在6年前发布的v7中添加的。当它发布时,没有任何浏览器具有任何地理定位功能。现在,所有主流浏览器都有一个内置的HTML5地理定位API,不再需要v7中的这个变通方法类。您可以在此处找到一篇关于如何在V8中使用HTML5地理定位API的文章:https://msdn.microsoft.com/en-us/library/mt712802.aspx

这些示例目前还没有展示如何创建一个精确的圆,因为空间数学库还没有提供,这使得创建圆变得非常简单。这个库中有一个名为getRegularPolygon (docs:https://msdn.microsoft.com/en-us/library/mt712834.aspx)的静态函数。它返回一个位置数组,这些位置数组在具有指定半径的位置周围形成一个正多边形。如果生成一个具有30个或更多点的正多边形,它看起来将像一个圆。然而,这个空间数学函数中有一个bug,因为它意味着默认使用米,而不是使用KM。我已经整理了一个代码样本,它在用户位置周围画了一个精确的圆圈,并为当前的bug添加了一个次要的工作。这项工作将继续工作,即使在错误修复后,所以你不需要担心它在未来破坏。以下是代码示例:

代码语言:javascript
运行
复制
<!DOCTYPE html>
<html>
<head>
    <title></title>
    <meta charset="utf-8" />
    <script type='text/javascript'
            src='http://www.bing.com/api/maps/mapcontrol?callback=GetMap'
            async defer></script>
    <script type='text/javascript'>
    function GetMap() {
        var map = new Microsoft.Maps.Map('#myMap', {
            credentials: 'Your Bing Maps Key'
        });

        //Load the spatial math module
        Microsoft.Maps.loadModule("Microsoft.Maps.SpatialMath", function () {
            //Request the user's location
            navigator.geolocation.getCurrentPosition(function (position) {
                var loc = new Microsoft.Maps.Location(
                    position.coords.latitude,
                    position.coords.longitude);

                //Create an accuracy circle
                var accuracyRadiusMeters = position.coords.accuracy;

                var path = Microsoft.Maps.SpatialMath.getRegularPolygon(loc, accuracyRadiusMeters/1000, 30,  Microsoft.Maps.SpatialMath.KM);
                var poly = new Microsoft.Maps.Polygon(path);
                map.entities.push(poly);           

                //Add a pushpin at the user's location.
                var pin = new Microsoft.Maps.Pushpin(loc);
                map.entities.push(pin);

                //Center the map on the user's location.
                map.setView({ center: loc, zoom: 17 });
            });
        });
    }
    </script>
</head>
<body>
    <div id="myMap" style="position:relative;width:600px;height:400px;"></div>
</body>
</html>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37453296

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档