Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript全局变量问题 谷歌地图JavaScript API示例:简单街景示例 谷歌地图JavaScript API示例:简单街景示例 myPano变种; 函数初始化(){ var geocoder=new GClientGeocoder(); var address=“美国加利福尼亚州山景城圆形剧场公园路1600号”; geocoder.getLatLng( 地址:, 功能(点){ 如果(!点){ 警报(地址+“未找到”); }否则{ 全景选项={latlng:point}; myPano=新的GStreetviewPanorama(document.getElementById(“pano”),全景选项); addListener(myPano,“error”,handleNoFlash); } }); } 函数handleNoFlash(错误代码){ 如果(错误代码==闪存不可用){ 警报(“错误:您的浏览器似乎不支持Flash”); 返回; } }_Javascript_Google Maps - Fatal编程技术网

javascript全局变量问题 谷歌地图JavaScript API示例:简单街景示例 谷歌地图JavaScript API示例:简单街景示例 myPano变种; 函数初始化(){ var geocoder=new GClientGeocoder(); var address=“美国加利福尼亚州山景城圆形剧场公园路1600号”; geocoder.getLatLng( 地址:, 功能(点){ 如果(!点){ 警报(地址+“未找到”); }否则{ 全景选项={latlng:point}; myPano=新的GStreetviewPanorama(document.getElementById(“pano”),全景选项); addListener(myPano,“error”,handleNoFlash); } }); } 函数handleNoFlash(错误代码){ 如果(错误代码==闪存不可用){ 警报(“错误:您的浏览器似乎不支持Flash”); 返回; } }

javascript全局变量问题 谷歌地图JavaScript API示例:简单街景示例 谷歌地图JavaScript API示例:简单街景示例 myPano变种; 函数初始化(){ var geocoder=new GClientGeocoder(); var address=“美国加利福尼亚州山景城圆形剧场公园路1600号”; geocoder.getLatLng( 地址:, 功能(点){ 如果(!点){ 警报(地址+“未找到”); }否则{ 全景选项={latlng:point}; myPano=新的GStreetviewPanorama(document.getElementById(“pano”),全景选项); addListener(myPano,“error”,handleNoFlash); } }); } 函数handleNoFlash(错误代码){ 如果(错误代码==闪存不可用){ 警报(“错误:您的浏览器似乎不支持Flash”); 返回; } },javascript,google-maps,Javascript,Google Maps,我想在打开页面时显示地址:美国加利福尼亚州山景城1600圆形剧场公园路的街景getLatLng()是异步的 您调用getLatLng(),一段时间后,它会用数据调用您的回调。在调用getLatLng()之后,会立即调用“函数外部”代码,在对“函数内部”回调进行异步调用之前。getLatLng()是异步的 您调用getLatLng(),一段时间后,它会用数据调用您的回调。在调用getLatLng()之后,会立即调用“函数外部”代码,在对“函数内部”回调进行异步调用之前。内部函数是回调函数。也就是说

我想在打开页面时显示地址:美国加利福尼亚州山景城1600圆形剧场公园路的街景

getLatLng()
是异步的

您调用
getLatLng()
,一段时间后,它会用数据调用您的回调。在调用
getLatLng()
之后,会立即调用“函数外部”代码,在对“函数内部”回调进行异步调用之前。

getLatLng()
是异步的


您调用
getLatLng()
,一段时间后,它会用数据调用您的回调。在调用
getLatLng()
之后,会立即调用“函数外部”代码,在对“函数内部”回调进行异步调用之前。

内部函数是回调函数。也就是说,它会等到GeocodeAPI调用运行完毕后再执行。这称为异步执行。您会注意到,外部警报在内部警报之前触发,即使内部警报是在前面编写的


任何需要有效newPoint值的代码都需要从回调函数中执行,就像内部警报一样。

内部函数是回调函数。也就是说,它会等到GeocodeAPI调用运行完毕后再执行。这称为异步执行。您会注意到,外部警报在内部警报之前触发,即使内部警报是在前面编写的


任何需要有效newPoint值的代码都需要从回调函数中执行,就像内部警报一样。

因为调用内部警报的回调函数在外部警报之后运行

尝试将外部警报延迟一秒钟,您将看到将发出正确的警报值

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<title>Google Maps JavaScript API Example: Simple Streetview Example</title>
<script src="http://maps.google.com/maps?file=api&amp;v=2.x&amp;key=ABQIAAAAgVzm2syhpm0A5rAKFMg3FBS-DTtkk0JB-Y_gKL-3MRZwBHch9RSjWJj17-fEEecjCvYeo1i7w_1yPw"
        type="text/javascript"></script>
<script type="text/javascript">

var myPano;

function initialize() {

    var geocoder = new GClientGeocoder();

    var address = "1600 Amphitheatre Parkway, Mountain View, CA, USA";
    geocoder.getLatLng(
        address,
        function(point) {
        if (!point) {
            alert(address + " not found");
        } else {
            panoramaOptions = { latlng:point };
            myPano = new GStreetviewPanorama(document.getElementById("pano"), panoramaOptions);
            GEvent.addListener(myPano, "error", handleNoFlash);
        }
    });
}

function handleNoFlash(errorCode) {
  if (errorCode == FLASH_UNAVAILABLE) {
    alert("Error: Flash doesn't appear to be supported by your browser");
    return;
  }
}  
</script>
这是因为调用内部警报的函数是异步的


编辑:请注意,上述做法不好,仅用于帮助您了解发生了什么以及原因。

因为您调用内部警报的回调函数在外部警报之后运行

尝试将外部警报延迟一秒钟,您将看到将发出正确的警报值

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<title>Google Maps JavaScript API Example: Simple Streetview Example</title>
<script src="http://maps.google.com/maps?file=api&amp;v=2.x&amp;key=ABQIAAAAgVzm2syhpm0A5rAKFMg3FBS-DTtkk0JB-Y_gKL-3MRZwBHch9RSjWJj17-fEEecjCvYeo1i7w_1yPw"
        type="text/javascript"></script>
<script type="text/javascript">

var myPano;

function initialize() {

    var geocoder = new GClientGeocoder();

    var address = "1600 Amphitheatre Parkway, Mountain View, CA, USA";
    geocoder.getLatLng(
        address,
        function(point) {
        if (!point) {
            alert(address + " not found");
        } else {
            panoramaOptions = { latlng:point };
            myPano = new GStreetviewPanorama(document.getElementById("pano"), panoramaOptions);
            GEvent.addListener(myPano, "error", handleNoFlash);
        }
    });
}

function handleNoFlash(errorCode) {
  if (errorCode == FLASH_UNAVAILABLE) {
    alert("Error: Flash doesn't appear to be supported by your browser");
    return;
  }
}  
</script>
这是因为调用内部警报的函数是异步的


编辑:请注意,上面的内容是错误的做法,应该只用于帮助您了解发生了什么以及原因。您修复了异步
getLatLng()
的问题。新代码的唯一问题是,在您请求的地址没有全景图(去掉“1600”就可以了)。有一个函数将返回最近全景的点:。如果附近没有全景,它将返回null。以下是如何在代码中使用它:

setTimeout(function(){ alert(newPoint); }, 1000);

您修复了异步
getLatLng()
的问题。新代码的唯一问题是,在您请求的地址没有全景图(去掉“1600”就可以了)。有一个函数将返回最近全景的点:。如果附近没有全景,它将返回null。以下是如何在代码中使用它:

setTimeout(function(){ alert(newPoint); }, 1000);

虽然超时可以帮助刚刚接触异步编程的人更好地理解这个概念,但他们也应该小心地认识到,在像OP这样的代码示例中使用超时并不是一种好的技术。异步调用不能保证在1秒甚至10秒内完成(考虑非常慢的连接)。这绝对不是一个好主意。无法猜测异步函数需要多长时间。首先提供回调是有原因的。是的,我完全同意这两条评论,超时只是为了帮助他理解,证明在调用外部警报时var没有初始化。这种代码除了用于测试目的外,不应用于任何其他目的……虽然超时可能有助于异步编程新手更好地理解这一概念,但他们也应该小心地意识到,在像OP这样的代码示例中使用它不是一种好的技术。异步调用不能保证在1秒甚至10秒内完成(考虑非常慢的连接)。这绝对不是一个好主意。无法猜测异步函数需要多长时间。首先提供回调是有原因的。是的,我完全同意这两条评论,超时只是为了帮助他理解,证明在调用外部警报时var没有初始化。这种代码除了用于测试目的外,不应该用于任何其他目的……我认为我在这里吹毛求疵,但说“回调函数在GeocodeAPI调用完成运行时等待”是不正确的。实际上,当getLatLang完成其工作时,它会调用回调函数并返回结果。我相信你已经知道了