【问题标题】:Google Maps API markers and zoomGoogle Maps API 标记和缩放
【发布时间】:2012-11-16 21:50:52
【问题描述】:

我是 Google Maps API 的新手。

我的情况:以全屏谷歌地图为背景的网站。

第一个问题:如果用户向下滚动或缩小太多,就会出现灰色背景。是否可以限制最大缩小,并且他不能滚动?或者可以垂直重复地图(带有标记)。 如果可以设置最大缩小并将他锁定在地图中,我如何动态计算与屏幕分辨率相关的最大缩小?

第二个问题:是否可以将自定义 javascript 添加到标记中? 示例:我创建了 5 个标记,每个标记都应包含一个自定义值(来自数据库的 ID)。点击我自己的函数应该使用自定义值作为参数调用并做一些事情。

编辑:这就是我所说的灰色:(谷歌地图的垂直“末端”)

【问题讨论】:

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


    【解决方案1】:
    1. Map对象有属性maxZoom,在地图创建时设置

    2. 是的,您可以添加点击事件,更改弹出窗口的打开状态,而且由于它是 javascript,您可以像 markr.MyData = 'something interesting' 一样简单地添加任何其他数据

    我不确定你的意思是什么灰色部分?我在谷歌地图中看不到最大和最小缩放的灰色部分

    【讨论】:

    • 谢谢!得到它几乎工作。您是否知道防止地图滚动(进入灰色区域)的方法?也许是一种根据屏幕分辨率计算 minZoom 方式的方法? :)
    • 你能说明一下你的意思是什么灰色部分吗?因为我没有看到任何
    【解决方案2】:

    好的。终于成功了! :)

    修复灰色区域(处理缩放):

    function setBounds() {
        google_allowedBounds = new google.maps.LatLngBounds(
        new google.maps.LatLng(-85.000, -122.591),
        new google.maps.LatLng(85.000, -122.333));
        google_lastCenter = google_map.getCenter();
        google_lastZoom = google_map.getZoom();
        google.maps.event.addListener(google_map, "bounds_changed", function () {
            checkBounds();
        });
    
        google.maps.event.addListener(google_map, 'center_changed', function () {
            checkBounds();
        });
    }
    
    function checkBounds() {
        if (google_allowedBounds.getNorthEast().lat() > google_map.getBounds().getNorthEast().lat()) {
            if(google_allowedBounds.getSouthWest().lat() < google_map.getBounds().getSouthWest().lat()) {
                google_lastCenter = google_map.getCenter();
                google_lastZoom = google_map.getZoom();
                return true;
            }
        }
        google_map.panTo(google_lastCenter);
        google_map.setZoom(google_lastZoom);
        return false;
    }
    

    标记点击处理程序:

    google_listener = google.maps.event.addListener(marker, 'click', markerHandler);
    
    function markerHandler(event) {
        window.console.log(this);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-01
      • 2016-11-25
      • 1970-01-01
      • 1970-01-01
      • 2014-01-15
      • 1970-01-01
      • 2011-10-12
      相关资源
      最近更新 更多