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 谷歌地图api中的缩放功能太强大了_Javascript_Google Maps_Google Maps Api 3 - Fatal编程技术网

Javascript 谷歌地图api中的缩放功能太强大了

Javascript 谷歌地图api中的缩放功能太强大了,javascript,google-maps,google-maps-api-3,Javascript,Google Maps,Google Maps Api 3,这是我的名片。在这里,我通过引出序号显示了当前位置和结束位置。 我试图在地图的起点和终点之间确定方向。在这种情况下,不会显示方向标记,可能是因为两者共享同一位置。但缩放太大,导致无法覆盖起点和终点。用户必须双击鼠标右键才能看到起点和位置 我也试过, new_boundary = new google.maps.LatLngBounds(); new_boundary.extend(new google.maps.LatLng(start)); new_boundary.e

这是我的名片。在这里,我通过引出序号显示了当前位置和结束位置。 我试图在地图的起点和终点之间确定方向。在这种情况下,不会显示方向标记,可能是因为两者共享同一位置。但缩放太大,导致无法覆盖起点和终点。用户必须双击鼠标右键才能看到起点和位置

我也试过,

    new_boundary = new google.maps.LatLngBounds();
    new_boundary.extend(new google.maps.LatLng(start));
    new_boundary.extend(new google.maps.LatLng(end));
    map.fitBounds(new_boundary);
但它不起作用。我的地图配置有什么问题?

此代码正确

添加时,地图的分辨率会发生变化

 directionsDisplay.setDirections(response);
setDirections(方向:DirectionsResult)无将渲染器设置为 使用DirectionsService的结果。设置一组有效的 以这种方式显示的方向将显示在屏幕上 渲染器的指定贴图和面板

希望我能正确理解问题,英语我不是我的母语

您的脚本(至少对我而言)在这一行中断:

dir=((Math.atan2(z.lng()-a.lng(),z.lat()-a.lat())*180)/Math.PI)+360
z=(step.lat_lngs.length)?step.lat_lngs[1]:step.end_point,
请看这一行:

dir=((Math.atan2(z.lng()-a.lng(),z.lat()-a.lat())*180)/Math.PI)+360
z=(step.lat_lngs.length)?step.lat_lngs[1]:step.end_point,
对于第一步
lat\u lngs.length
为1,因此
step.lat\u lngs[1]
未定义,调用
z.lng()
失败,并显示“无法调用未定义的方法'lng'”

该错误的可能修复方法:

z=(step.lat_lngs.length>1)?step.lat_lngs[step.lat_lngs.length-1]:step.end_point,

与缩放相关: 当您没有禁用完整的UI时,您会看到结果(缩放)是正确的

默认情况下,
DirectionsRenderer
将刷新地图的视口,以便整个路线可见。 这将完成(脚本中初始设置的边界将被丢弃)

若要获得另一个结果(保留当前视口,但将其扩展以使管线也可见),必须:

  • DirectionsRenderer
    preserveViewPort
    -选项设置为
    true
    (默认值为
    false
  • 使用路线的边界扩展地图的边界


  • 尝试将验证添加为

            directionsService.route(request, function(response, status) {
                if (status == google.maps.DirectionsStatus.OK) {
     if(!response.routes[0].bounds.getNorthEast().equals(response.routes[0].bounds.getSouthWest())){
                     directionsDisplay.setDirections(response);   
                    }
                    addDirections(response.routes[0]);
                }
            });
    

    检查答案是否包含不同的要点

    谢谢,为什么会发生这种情况?由于起点和终点相同?原因响应包含边界((41.30413,-72.92714000000001),(41.30413,-72.92714000000001))-为什么如此-我不知道任何解决方案?可能点太近(近似相同)-如果我更改起点或/和终点坐标以增加距离-谢谢,那么,如果两个位置太近,我应该跳过代码的哪一部分?谢谢,错误
    “无法调用undefined的方法'lng'”
    已经解决。并非所有标记都未显示在地图中,因为缩放太大。在这种情况下,如何调整缩放级别?