【发布时间】:2013-07-03 09:21:07
【问题描述】:
看,我正在使用 Google Maps JavaScript API v3。用户填写地址,我显示该地址的街景。一切都很好(很多地方都很好),直到进入像“湖”这样的地方。它只是显示灰色,没有别的。我想阻止用户继续使用灰色图像而不是谷歌地图街景的下一页。
当我填写 Laken 时,getPanoramaByLocation() 函数返回 status == "OK",因为它找到了一些东西,但它不是可见的图像,它只是灰色的。如何防止 API 这样做?例如,当您无法显示此位置(为灰色)时,显示附近的下一个可用位置。
以下是代码摘录:
功能:
<script type="text/javascript">
//this is a standard location that I show when te user starts
var map;
var huis_lat,huis_lng;
$(document).ready(function(){
map = new GMaps({
el: '#map',
lat: -12.043333,
lng: -77.028333
});
//SAVE HOMELAT&LONGT
$('#geocoding_form').submit(function(e){
var address=document.getElementById("address").value;
e.preventDefault();
GMaps.geocode({
address: $('#address').val().trim(),
callback: function(results, status)
{
if(status=='OK'){
var latlng = results[0].geometry.location;
huis_lat=latlng.lat();
huis_lng=latlng.lng();
verander(huis_lat, huis_lng);
document.getElementById("div_overlayStart").style.display="none";
document.getElementById("div_overlayThuis").style.display="block";
}
else if(!address) //no address
{
alert("fout?")
document.getElementById('alarm1').innerHTML = 'FILL IN ADDRESS';
}
else if(status=='UNKNOWN_ERROR')
{
document.getElementById('alarm1').innerHTML = 'UNKNOWN ERROR!';
}
else if(status=='ZERO_RESULTS')
{
document.getElementById('alarm1').innerHTML = 'UNKNOWN ADDRESS!';
}
}
});
});
});
</script>
HTML:
EX:填写:Kongingslaan 1, Laken
<body>
<form method="post" id="geocoding_form">
<div class="input">
<input type="text" id="address" name="address" />
<button type="submit" class="linksSocial" style="border: 0; background: transparent">
<img src="images/btn_job.png" width="231" heght="36" alt="submit" />
</button>
</div>
</form>
</body>
函数verander():
<script type="text/javascript">
function verander(google_lat, google_lng) {
var bryantPark = new google.maps.LatLng(google_lat, google_lng);
var panoramaOptions = {
position:bryantPark,
pov: {
heading: 185,
pitch:0,
zoom:1,
},
panControl : false,
streetViewControl : false,
mapTypeControl: false,
overviewMapControl: false ,
linksControl: false,
addressControl:false,
zoomControl : false,
}
map = new google.maps.StreetViewPanorama(document.getElementById("map_canvas"), panoramaOptions);
map.setVisible(true);
}
</script>
【问题讨论】:
-
当我搜索无效地址时没有灰色的东西(顺便说一句:“湖”对我来说返回结果,挪威的海)。请告诉我们
verander() -
你不能简单地在回调中测试
results.length并相应地分支吗? -
@Dr.Molle :在此处的文本框中插入 Laken,您会明白我的意思 (jobadvisor.scriptonite.be/jobadvisor.html)。我在描述中添加了 verander()。
-
@Beetroot-Beetroot :如果我在错误的位置测试长度,它会是 null 还是 ...?
-
发布答案对我来说可能更简单.....
标签: google-maps-api-3 location google-street-view raiseerror