【问题标题】:Zoom is too great in google maps apigoogle maps api中的缩放太大了
【发布时间】:2014-04-16 03:29:26
【问题描述】:

这是我的fiddle。在这里,我通过气球显示了当前位置和结束位置。 我正在尝试在地图的起点和终点之间放置方向。在这种情况下,没有显示方向标记可能是因为两者共享相同的位置。但是缩放太大,导致它没有覆盖起点和终点。用户必须双击右键才能看到起点和位置。

我也试过了,

    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);

但它不起作用。我的地图配置有什么问题?

【问题讨论】:

    标签: javascript google-maps google-maps-api-3


    【解决方案1】:

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

    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_lngs.length 是 1 ,所以 step.lat_lngs[1] 是未定义的,z.lng() 的调用失败 “无法调用未定义的方法 'lng'”

    对该错误的可能修复:

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

    与缩放相关: 如果您不禁用完整的 UI,您会看到结果(缩放)是正确的。

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

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

    1. DirectionsRendererpreserveViewPort选项设置为true(默认为false
    2. 用路线的边界扩展地图的边界

        directionsService.route(request, function(response, status) {
          if (status == google.maps.DirectionsStatus.OK) {
            directionsDisplay.set('preserveViewport',true);
            map.fitBounds(map.getBounds().union(response.routes[0].bounds));
    
            //continue with your code
    

    【讨论】:

    • 谢谢,错误"Cannot call method 'lng' of undefined" 已解决。 Bot 并非所有标记都未显示在地图中,因为缩放太大。在这种情况下如何调整缩放级别?
    【解决方案2】:

    此代码正确for example

    添加时地图会更改分辨率

     directionsDisplay.setDirections(response);
    

    setDirections(directions:DirectionsResult) 无 将渲染器设置为 使用 DirectionsService 的结果。设置一个有效的集合 以这种方式的方向将显示在 渲染器指定的地图和面板。

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

    【讨论】:

    • 谢谢,为什么会这样?由于相同的起点和终点?
    • 原因响应包含界限((41.30413,-72.92714000000001),(41.30413,-72.92714000000001)) - 为什么会这样 - 我不知道
    • 有什么解决办法吗?
    • 可能的点太近(大致相同)-如果我更改开始或/和结束坐标以增加距离-一切都很好
    • 谢谢,如果两个位置太近,我应该跳过哪一部分代码?
    【解决方案3】:

    尝试添加验证为

            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]);
                }
            });
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-16
      • 1970-01-01
      • 2011-02-07
      • 2012-08-23
      • 2013-01-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多