我有经纬度坐标,并且一直试图在网络浏览器实例中打开Google街景或Bing街边。
我已经设法使用下面的Google街景视图网址,但我发现如果坐标不完全在路上它不起作用。相反,你得到了整个世界的地图。
string.Format(
"http://maps.google.com/?cbll={0},{1}&cbp=12,0,0,0,5&layer=c",
this.Location.Latitude,
this.Location.Longitude)
我想要使用的坐标是在伦敦所以它几乎全部被映射。我想让最近的街道位置出现。
答案 0 :(得分:4)
我过去所做的就是这样的。我检查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#,而不是使用createStreetMap
内的$(document).ready(function() { ... });
调用,您将使用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
答案 1 :(得分:1)
你应该可以使用类似的东西:
http://maps.googleapis.com/maps/api/streetview?size=300x300&format=png&fov=90&location={0},{1}&sensor=false
答案 2 :(得分:1)
我曾经通过网址操作做了很多谷歌地图的事情。直到我发现能够从C#WebBrowser
实例调用JavaScript。我通常使用Google Maps API和WebBrowser
的{{3}}方法来调用我需要的内容。我发现它更具通用性,虽然它有时会很痛苦。
编辑:对不起我意识到这不一定是你问题的直接答案,但我发现除了最基本的地图操作之外,API和JavaScript提供了更好的功能。