【问题标题】:Google Streetview or Bing streetside URL's using Latitude and Longitude使用纬度和经度的 Google 街景或 Bing 街边 URL
【发布时间】:2013-01-31 14:09:04
【问题描述】:

我有纬度和经度坐标,并且一直在尝试在网络浏览器实例中打开 Google 街景或 Bing 街边。

我已经设法使用下面的谷歌街景网址来做到这一点,但是我发现如果坐标不完全在道路上,它就不起作用。相反,您会得到一张全世界的地图。

string.Format(
    "http://maps.google.com/?cbll={0},{1}&cbp=12,0,0,0,5&layer=c",
    this.Location.Latitude,
    this.Location.Longitude)

我要使用的坐标位于伦敦,因此几乎都已映射。我想显示最近的街道位置。

【问题讨论】:

    标签: c# google-maps bing-maps latitude-longitude google-street-view


    【解决方案1】:

    我过去所做的就是这样。我检查 StreetViewService 在给定位置 50 米范围内是否有“全景图”。这是一些完整的示例 JS 代码,应该可以按原样运行。

    <!DOCTYPE html>
    <html>
    <head>
    <title>Streetview</title>
    
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
    <style type="text/css">
    html { height: 100% }
    body { height: 100%; margin: 0; padding: 0 }
    #streetView { height: 100%; width: 100%; }
    </style>
    
    <script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false"></script>
    
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
    
    <script type="text/javascript">
    
        function createStreetMap(strMapCanvasID, intLat, intLong)
        {
            //create a google latLng object
            var streetViewLocation = new google.maps.LatLng(intLat,intLong);
            var panorama;
    
            //once the document is loaded, see if google has a streetview image within 50 meters of the given location, and load that panorama
            var sv = new google.maps.StreetViewService();
    
            sv.getPanoramaByLocation(streetViewLocation, 50, function(data, status) {
                if (status == 'OK') {
                    //google has a streetview image for this location, so attach it to the streetview div
                    var panoramaOptions = {
                        pano: data.location.pano,
                        addressControl: false,
                        navigationControl: true,
                        navigationControlOptions: {
                            style: google.maps.NavigationControlStyle.SMALL
                        }
                    }; 
                    var panorama = new google.maps.StreetViewPanorama(document.getElementById(strMapCanvasID), panoramaOptions);
                }
                else{
                    //no google streetview image for this location, so hide the streetview div
                    $('#' + strMapCanvasID).parent().hide();
                }
            });
    
            return panorama;
        }
    
        $(document).ready(function() {
            var myPano = createStreetMap('streetView', 51.513016, -0.144424);
        });
    </script>
    
    </head>
    <body>
    <div>
        <h2>Street View</h2>
        <div id="streetView"></div>
    </div>
    </body>
    </html>
    

    然后我只在 DOM 加载后调用此函数(否则,如果在 initialize 函数中尝试过早执行此操作,我会发现错误)。

    $(document).ready(function() {
        var myPano = createStreetMap('streetView', someLatitude, someLongitude);
    });
    

    我相信 C#,而不是在 $(document).ready(function() { ... }); 中使用对 createStreetMap 的调用,而是使用 WebBrowser.InvokeScript 方法并执行以下操作:

    object[] args = {"streetView",51.513016,-0.144424};
    webBrowser1.Document.InvokeScript("createStreetMap",args);
    

    另见:http://www.codeproject.com/Tips/60924/Using-WebBrowser-Document-InvokeScript-to-mess-aro

    【讨论】:

    • 如果我错了,请纠正我,但这看起来完全是在 JavaScript 中。我上次查看 Google 时没有 .NET API。
    • 现在您的编辑刚刚在其上添加了 JQuery,这对尝试在 C#.Net 应用程序中进行此操作的人有什么帮助?
    • 您之前的一位 cmets 提到“从 C# WebBrowser 实例调用 JavaScript 的能力”
    • 是的,这就是我的答案。但这种能力仅限于网页上已经存在的功能。在没有 A) 导致异常发生的情况下注入新函数是非常困难的如何将一个全新的 C# 函数放入 JavaScript。
    • 您的回答根本没有解决用户不是从网页而是从.Net 执行此操作的事实,因此不完整。您只是提供了一个更具体的示例,说明我在回答中所说的要做什么。是的,如果这个问题是关于 Web 开发的,那么你的答案是正确的,但事实并非如此。
    【解决方案2】:

    你应该可以使用类似的东西:

    http://maps.googleapis.com/maps/api/streetview?size=300x300&format=png&fov=90&location={0},{1}&sensor=false

    【讨论】:

    • 我更感兴趣的是打开一个谷歌地图页面,以便用户可以平移和浏览。
    【解决方案3】:

    我曾经通过 URL 操作来做很多 Google 地图的工作。直到我发现了从 C#WebBrowser 实例调用 JavaScript 的能力。我通常使用Google Maps APIWebBrowserInvokeScript 方法来调用我需要的东西。我发现它的用途更加广泛,尽管有时会很痛苦。

    编辑:抱歉,我意识到这不一定是您问题的直接答案,但我发现除了最基本的地图操作之外,API 和 JavaScript 提供了更好的功能。

    【讨论】:

    • 这很有趣。我实际上是从 Windows 应用商店应用程序编码并启动一个 URL 来打开 Web 浏览器。我可以将 Web 浏览器控件直接集成到我的页面中,但 JavaScript 对我来说是一个非常可怕的地方,有没有什么好的指南可以帮助我实现目标。
    • @user1212017 一旦你学习了基础知识,JavaScript 真的没那么糟糕。在这种情况下,您实际上并不需要编写太多 JavaScript(您将不得不使用 API 做一些事情),棘手的部分是避免跨域调用。如果您以前没有使用过 HTML / JavaScript,最好的起点是学习两者的基础知识,或者简单地使用实际 Google 地图页面上的内置 JavaScript 函数。使用内置的不需要编写任何 JavaScript,但我认为它们没有在任何地方记录,我通过 Chrome 的 JavaScript 控制台获得了它们。
    • @user1212017 w3schools.com 是我学习 JavaScript 和 HTML 时最好的朋友。他们有很多非常有用的教程。
    猜你喜欢
    • 1970-01-01
    • 2017-06-20
    • 1970-01-01
    • 1970-01-01
    • 2018-01-20
    • 1970-01-01
    • 1970-01-01
    • 2010-09-14
    • 1970-01-01
    相关资源
    最近更新 更多