重置Google Maps API v3上的边界

如何解决重置Google Maps API v3上的边界

| 当用户选择一个选项时,如何重置GoogleMap的边界?边界已经设置为包括该区域的“大图”,我想在用户选择一个选项时缩放到特定区域...并且需要通过重置边界来做到这一点。扩展以包括纬度/经度将不起作用,因为它们已经包含在内。     

解决方法

        您必须创建一个新的bounds对象,将地图点添加到该对象,然后将bounds对象添加到地图。 浓缩溶液:
 //Create new bounds object
 var bounds = new google.maps.LatLngBounds();
 //Loop through an array of points,add them to bounds
 for (var i = 0; i < data.length; i++) {
      var geoCode = new google.maps.LatLng(data[i][1],data[i][2]);
      bounds.extend(geoCode); 
  }
  //Add new bounds object to map
  map.fitBounds(bounds);
我的完整解决方案是删除现有标记,通过ajax获取更新的点数组,将其添加到地图中,然后重置地图边界。
<script type=\"text/javascript\">

var map;
var markers = [];

$(document).ready(function () {
    initialize();
    setInterval(function () {
        setMarkers();
    },3000);
});

google.maps.visualRefresh = true;
function initialize()
{
    var mapOptions = {
        zoom: 2,center: new google.maps.LatLng(45,-93),mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    map = new google.maps.Map(document.getElementById(\'map-canvas\'),mapOptions);

    setMarkers();
}

function setMarkers()
{
    removeMarkers();

    var bounds = new google.maps.LatLngBounds();

    $.ajax({
        url: \"/Your/Url?variable=123\",dataType: \"json\",success: function (data) {
            //Data returned is made up of string[3]
            if (data != null) {
                //loop through data
                for (var i = 0; i < data.length; i++) {
                    var geoCode = new google.maps.LatLng(data[i][1],data[i][2]);
                    var marker = new google.maps.Marker({
                        position: geoCode,map: map,title: data[i][0],content: \'<div style=\"height:50px;width:200px;\">\' + data[i][0] + \'</div>\'
                    });

                    var infowindow = new google.maps.InfoWindow();
                    google.maps.event.addListener(marker,\'click\',function () {
                        infowindow.setContent(this.content);
                        infowindow.open(map,this);
                    });

                    markers.push(marker);
                    bounds.extend(geoCode);
                }
            }
            map.fitBounds(bounds);
        }
    });
}

function removeMarkers()
{
    for (var i = 0; i < markers.length; i++) {
        markers[i].setMap(null);
    }
}
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?