Google maps api 3 实现谷歌地图v3街景
我正在尝试找出如何将以下三张地图之一转换为街景Google maps api 3 实现谷歌地图v3街景,google-maps-api-3,google-street-view,Google Maps Api 3,Google Street View,我正在尝试找出如何将以下三张地图之一转换为街景 路线图 混血儿 卫星 下面是我用来生成三种不同谷歌地图的代码: var map; var map2; var map3; $(document).ready(function(){ google.maps.event.addDomListener(window, 'load', initialize); function initialize() { var myLatLng = new google.maps.LatLng(&l
- 路线图
- 混血儿
- 卫星
var map;
var map2;
var map3;
$(document).ready(function(){
google.maps.event.addDomListener(window, 'load', initialize);
function initialize() {
var myLatLng = new google.maps.LatLng(<?php echo $latitude; ?>, <?php echo $longitude; ?>);
var myOptions = {
zoom: 15,
center: myLatLng,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
map = new google.maps.Map(document.getElementById("map-canvas-1"),myOptions);
var myOptions2 = {
zoom: 15,
center: myLatLng,
mapTypeId: google.maps.MapTypeId.HYBRID
}
map2 = new google.maps.Map(document.getElementById("map-canvas-2"),myOptions2);
var myOptions3 = {
zoom: 15,
center: myLatLng,
mapTypeId: google.maps.MapTypeId.SATELLITE
}
map3 = new google.maps.Map(document.getElementById("map-canvas-3"),myOptions3);
var marker = new google.maps.Marker({
position: myLatLng,
map: map,
title:"Map1" });
var marker = new google.maps.Marker({
position: myLatLng,
map: map2,
title:"Map2" });
var marker = new google.maps.Marker({
position: myLatLng,
map: map3,
title:"Map3" });
}
var映射;
var-map2;
var-map3;
$(文档).ready(函数(){
google.maps.event.addDomListener(窗口“加载”,初始化);
函数初始化(){
var mylatng=newgoogle.maps.LatLng(,);
变量myOptions={
缩放:15,
中心:myLatLng,
mapTypeId:google.maps.mapTypeId.ROADMAP
}
map=new google.maps.map(document.getElementById(“map-canvas-1”),myOptions);
变量myOptions2={
缩放:15,
中心:myLatLng,
mapTypeId:google.maps.mapTypeId.HYBRID
}
map2=新的google.maps.Map(document.getElementById(“Map-canvas-2”),myOptions2);
变量myOptions3={
缩放:15,
中心:myLatLng,
mapTypeId:google.maps.mapTypeId.SATELLITE
}
map3=新的google.maps.Map(document.getElementById(“Map-canvas-3”),myoption3);
var marker=new google.maps.marker({
职位:myLatLng,
地图:地图,
标题:“Map1”});
var marker=new google.maps.marker({
职位:myLatLng,
地图:map2,,
标题:“Map2”});
var marker=new google.maps.marker({
职位:myLatLng,
地图:map3,,
标题:“Map3”});
}
以下是地图部门的代码:
<div id="maptabs">
<ul>
<li><a href="#maptabs-1">Road Map</a></li>
<li><a href="#maptabs-2">Hybrid</a></li>
<li><a href="#maptabs-3">Satellite</a></li>
</ul>
<div id="maptabs-1">
<div id="map-canvas-1" class="map"></div>
</div>
<div id="maptabs-2">
<div id="map-canvas-2" class="map"></div>
</div>
<div id="maptabs-3">
<div id="map-canvas-3" class="map"></div>
</div>
</div>
如何更改卫星地图的地图选项以将其转换为街景?谢谢。您不能通过更改地图选项来完成,因为街景不是地图类型。最简单的方法可能是以编程方式指示地图显示街景全景,如下所示:
map3.getStreetView().setPosition(myLatLng);
map3.getStreetView().setVisible(true);
您不能通过更改地图选项来执行此操作,因为街景不是地图类型。最简单的方法可能是通过编程指示地图显示其街景全景,如下所示:
map3.getStreetView().setPosition(myLatLng);
map3.getStreetView().setVisible(true);
这并不像Trott的答案那么简单,因为POV是错误的。我只是花了几个小时在这个问题上,这是我的答案,给那些最终回答这个问题的人(因为这是我发现的问题之一,但答案没有用) 默认情况下,街景POV是拍摄图像时卡车所面对的方向(见图)。您需要获取卡车的位置和房屋的位置,并计算“航向”从第一个位置到第二个位置,然后将您的街景位置设置为您刚才计算的卡车的车头位置:
// adrloc=target address
// svwloc=street-view truck location
svwService.getPanoramaByLocation(adrloc,svwdst,function(dta,sts) {
if(sts==google.maps.StreetViewStatus.OK) {
var svwloc=dta.location.latLng;
var svwhdg=google.maps.geometry.spherical.computeHeading(svwloc,adrloc);
var svwmap=avwMap.getStreetView();
svwmap.setPosition(svwloc);
svwmap.setPov({ heading: svwhdg, pitch: 0 });
svwMarker=new google.maps.Marker({ map:svwmap, position: adrloc });
svwmap.setVisible(true);
}
else {
...
}
使用street view的另一个技巧/陷阱是,您需要通过不断增加的距离反复调用getPanoramaByLocation
来获取距离您的地址位置最近的街道视图,直到您成功或达到某个最大距离。我使用以下代码解决此问题:
var SVW_MAX=100; // maximum street-view distance in meters
var SVW_INC=10; // increment street-view distance in meters
var svwService=new google.maps.StreetViewService(); // street view service
var svwMarker=null; // street view marker
// NOTE: avwMap is the aerial view map, code not shown
...
resolveStreetView(avwMap.getCenter(),SVW_INC);
...
var resolveStreetView=function(adrloc,svwdst) {
svwService.getPanoramaByLocation(adrloc,svwdst,function(dta,sts) {
if(sts==google.maps.StreetViewStatus.OK) {
var svwloc=dta.location.latLng;
var svwhdg=google.maps.geometry.spherical.computeHeading(svwloc,adrloc);
var svwmap=avwMap.getStreetView();
svwmap.setPosition(svwloc);
svwmap.setPov({ heading: svwhdg, pitch: 0 });
svwMarker=new google.maps.Marker({ map:svwmap, position: adrloc });
svwmap.setVisible(true);
}
else if(svwdst<SVW_MAX) {
resolveStreetView(adrloc,svwdst+SVW_INC);
}
});
}
var SVW_MAX=100;//以米为单位的最大街景距离
var SVW_INC=10;//以米为单位增加街景距离
var svwService=new google.maps.StreetViewService();//街景服务
var svwMarker=null;//街景标记
//注:avwMap为鸟瞰图,代码未显示
...
resolveStreetView(avwMap.getCenter(),SVW_公司);
...
var ResolvetStreetView=函数(adrloc、svwdst){
getPanoramaByLocation(adrloc、svwdst、function(dta、sts){
如果(sts==google.maps.StreetViewStatus.OK){
var svwloc=dta.location.latLng;
var svwhdg=google.maps.geometry.spheremic.computeHeading(svwloc,adrloc);
var svwmap=avwMap.getStreetView();
svwmap.setPosition(svwloc);
svwmap.setPov({标题:svwhdg,音高:0});
svwMarker=new google.maps.Marker({map:svwmap,position:adrloc});
svwmap.setVisible(true);
}
else if(svwdst这并不像Trott的答案那么简单,因为POV是错误的。我只是花了几个小时在这个问题上,下面是我的答案,供那些最终回答这个问题的人参考(因为这是我发现的问题之一,但答案没有用)
默认情况下,街景POV是拍摄图像时卡车所面对的方向(见图)。您需要获取卡车的位置和房屋的位置,并计算“航向”从第一个位置到第二个位置,然后将您的街景位置设置为您刚才计算的卡车的车头位置:
// adrloc=target address
// svwloc=street-view truck location
svwService.getPanoramaByLocation(adrloc,svwdst,function(dta,sts) {
if(sts==google.maps.StreetViewStatus.OK) {
var svwloc=dta.location.latLng;
var svwhdg=google.maps.geometry.spherical.computeHeading(svwloc,adrloc);
var svwmap=avwMap.getStreetView();
svwmap.setPosition(svwloc);
svwmap.setPov({ heading: svwhdg, pitch: 0 });
svwMarker=new google.maps.Marker({ map:svwmap, position: adrloc });
svwmap.setVisible(true);
}
else {
...
}
使用street view的另一个技巧/陷阱是,您需要通过不断增加的距离反复调用getPanoramaByLocation
来获取距离您的地址位置最近的街道视图,直到您成功或达到某个最大距离。我使用以下代码解决此问题:
var SVW_MAX=100; // maximum street-view distance in meters
var SVW_INC=10; // increment street-view distance in meters
var svwService=new google.maps.StreetViewService(); // street view service
var svwMarker=null; // street view marker
// NOTE: avwMap is the aerial view map, code not shown
...
resolveStreetView(avwMap.getCenter(),SVW_INC);
...
var resolveStreetView=function(adrloc,svwdst) {
svwService.getPanoramaByLocation(adrloc,svwdst,function(dta,sts) {
if(sts==google.maps.StreetViewStatus.OK) {
var svwloc=dta.location.latLng;
var svwhdg=google.maps.geometry.spherical.computeHeading(svwloc,adrloc);
var svwmap=avwMap.getStreetView();
svwmap.setPosition(svwloc);
svwmap.setPov({ heading: svwhdg, pitch: 0 });
svwMarker=new google.maps.Marker({ map:svwmap, position: adrloc });
svwmap.setVisible(true);
}
else if(svwdst<SVW_MAX) {
resolveStreetView(adrloc,svwdst+SVW_INC);
}
});
}
var SVW_MAX=100;//以米为单位的最大街景距离
var SVW_INC=10;//以米为单位增加街景距离
var svwService=new google.maps.StreetViewService();//街景服务
var svwMarker=null;//街景标记
//注:avwMap为鸟瞰图,代码未显示
...
resolveStreetView(avwMap.getCenter(),SVW_公司);
...
var ResolvetStreetView=函数(adrloc、svwdst){
getPanoramaByLocation(adrloc、svwdst、function(dta、sts){
如果(sts==google.maps.StreetViewStatus.OK){
var svwloc=dta.location.latLng;
var svwhdg=google.maps.geometry.spheremic.computeHeading(svwloc,adrloc);
var svwmap=avwMap.getStreetView();
svwmap.setPosition(svwloc);
svwmap.setPov({标题:svwhdg,音高:0});
svwMarker=new google.maps.Marker({map:svwmap,position:adrloc});
svwmap.setVisible(true);
}
如果(SVWDSTA)就这么简单,嗯?非常感谢。我感谢你的帮助。这非常有效。就这么简单,嗯?非常感谢。我感谢你的帮助。这非常有效。