Google maps 潘托多重标记

Google maps 潘托多重标记,google-maps,google-maps-api-3,Google Maps,Google Maps Api 3,假设我从外部源加载新标记,它如下所示: var markersArray = []; downloadUrl("eventsxml.php", function(data) { var xml = data.responseXML; var markers = xml.documentElement.getElementsByTagName("marker"); for (var i = 0; i < markers.length; i++

假设我从外部源加载新标记,它如下所示:

var markersArray = [];

downloadUrl("eventsxml.php", function(data) {
        var xml = data.responseXML;
        var markers = xml.documentElement.getElementsByTagName("marker");
        for (var i = 0; i < markers.length; i++) {
          var name = markers[i].getAttribute("id");
          var address = markers[i].getAttribute("id");
          var type = markers[i].getAttribute("venue_type");
          var point = new google.maps.LatLng(
              parseFloat(markers[i].getAttribute("lat")),
              parseFloat(markers[i].getAttribute("lng")));
          var html = "<b>" + name + "</b> <br/>" + address;
          var icon = customIcons[type] || {};
          var marker = new google.maps.Marker({
            map: map,
            position: point,
            icon: icon.icon,
            shadow: icon.shadow

          });
          markersArray.push(marker);
          bindInfoWindow(marker, map, infoWindow, html);
        }
      });
var markersArray = [];
// create an empty bounds object
var bounds = new google.maps.LatLngBounds();

downloadUrl("eventsxml.php", function(data) {
    var xml = data.responseXML;
    var markers = xml.documentElement.getElementsByTagName("marker");
    for (var i = 0; i < markers.length; i++) {
      var name = markers[i].getAttribute("id");
      var address = markers[i].getAttribute("id");
      var type = markers[i].getAttribute("venue_type");
      var point = new google.maps.LatLng(
          parseFloat(markers[i].getAttribute("lat")),
          parseFloat(markers[i].getAttribute("lng")));

      // add each marker's location to the bounds
      bounds.extend(point);
      var html = "<b>" + name + "</b> <br/>" + address;
      var icon = customIcons[type] || {};
      var marker = new google.maps.Marker({
        map: map,
        position: point,
        icon: icon.icon,
        shadow: icon.shadow

      });
      markersArray.push(marker);
      bindInfoWindow(marker, map, infoWindow, html);
    }
    // center and zoom the map to fit the bounds
    map.fitBounds(bounds);
  });
var-markersArray=[];
下载URL(“eventsxml.php”,函数(数据){
var xml=data.responseXML;
var markers=xml.documentElement.getElementsByTagName(“标记”);
对于(var i=0;i“+地址;
var icon=customIcons[type]| |{};
var marker=new google.maps.marker({
地图:地图,
位置:点,,
icon:icon.icon,
阴影:icon.shadow
});
markersArray.push(marker);
bindInfoWindow(标记、地图、infoWindow、html);
}
});
我该如何收集标记的边界,然后在加载标记后将其全部平移到视图中?我在谷歌上做了很多搜索,但这些解决方案都不适合我

  • 创建空边界对象(a)
  • 将所有标记添加到它
  • 使用它来居中和缩放地图
  • 大概是这样的:

    var markersArray = [];
    
    downloadUrl("eventsxml.php", function(data) {
            var xml = data.responseXML;
            var markers = xml.documentElement.getElementsByTagName("marker");
            for (var i = 0; i < markers.length; i++) {
              var name = markers[i].getAttribute("id");
              var address = markers[i].getAttribute("id");
              var type = markers[i].getAttribute("venue_type");
              var point = new google.maps.LatLng(
                  parseFloat(markers[i].getAttribute("lat")),
                  parseFloat(markers[i].getAttribute("lng")));
              var html = "<b>" + name + "</b> <br/>" + address;
              var icon = customIcons[type] || {};
              var marker = new google.maps.Marker({
                map: map,
                position: point,
                icon: icon.icon,
                shadow: icon.shadow
    
              });
              markersArray.push(marker);
              bindInfoWindow(marker, map, infoWindow, html);
            }
          });
    
    var markersArray = [];
    // create an empty bounds object
    var bounds = new google.maps.LatLngBounds();
    
    downloadUrl("eventsxml.php", function(data) {
        var xml = data.responseXML;
        var markers = xml.documentElement.getElementsByTagName("marker");
        for (var i = 0; i < markers.length; i++) {
          var name = markers[i].getAttribute("id");
          var address = markers[i].getAttribute("id");
          var type = markers[i].getAttribute("venue_type");
          var point = new google.maps.LatLng(
              parseFloat(markers[i].getAttribute("lat")),
              parseFloat(markers[i].getAttribute("lng")));
    
          // add each marker's location to the bounds
          bounds.extend(point);
          var html = "<b>" + name + "</b> <br/>" + address;
          var icon = customIcons[type] || {};
          var marker = new google.maps.Marker({
            map: map,
            position: point,
            icon: icon.icon,
            shadow: icon.shadow
    
          });
          markersArray.push(marker);
          bindInfoWindow(marker, map, infoWindow, html);
        }
        // center and zoom the map to fit the bounds
        map.fitBounds(bounds);
      });
    
    请注意,这不会更改地图的缩放级别

    代码片段:

    //以下示例创建复杂标记以指示附近的海滩
    //悉尼,新南威尔士州,澳大利亚。
    函数initMap(){
    const map=new google.maps.map(document.getElementById(“map”){
    缩放:10,
    中心:{
    lat:-33.9,
    液化天然气:151.2
    },
    });
    const infoWindow=new google.maps.infoWindow();
    var-markersArray=[];
    //创建一个空边界对象
    var bounds=new google.maps.LatLngBounds();
    //下载URL(“eventsxml.php”,函数(数据){
    //var xml=data.responseXML;
    var xml=parseXml(xmlString);
    var markers=xml.documentElement.getElementsByTagName(“标记”);
    对于(var i=0;i“+地址;
    var icon=customIcons[type]| |{};
    var marker=new google.maps.marker({
    地图:地图,
    位置:点,,
    icon:icon.icon,
    标题:姓名
    });
    markersArray.push(marker);
    bindInfoWindow(标记、地图、infoWindow、html);
    }
    //居中并缩放地图以适应边界
    映射边界(bounds);
    // });
    }
    //由名称、板条和场地类型组成的标记数据。
    常量xmlString='';
    var customIcons={
    海滩:{
    图标:“https://developers.google.com/maps/documentation/javascript/examples/full/images/beachflag.png",
    },
    城镇:{
    图标:“http://maps.google.com/mapfiles/ms/micons/blue.png",
    }
    };
    函数parseXml(str){
    if(window.ActiveXObject){
    var doc=新的ActiveXObject('MicrosoftXMLDOM');
    doc.loadXML(str);
    退货单;
    }else if(window.DOMParser){
    return(新的DOMParser).parseFromString(str,'text/xml');
    }
    }
    函数bindInfoWindow(标记、地图、infoWindow、html){
    google.maps.event.addListener(标记'click',函数(){
    setContent(html);
    信息窗口。打开(地图、标记);
    });
    }
    /*始终明确设置贴图高度以定义div的大小
    *包含映射的元素*/
    #地图{
    身高:100%;
    }
    /*可选:使示例页面填充窗口*/
    html,
    身体{
    身高:100%;
    保证金:0;
    填充:0;
    }
    
    复杂标记图标
    
  • 创建空边界对象(a)
  • 将所有标记添加到它
  • 使用它来居中和缩放地图
  • 大概是这样的:

    var markersArray = [];
    
    downloadUrl("eventsxml.php", function(data) {
            var xml = data.responseXML;
            var markers = xml.documentElement.getElementsByTagName("marker");
            for (var i = 0; i < markers.length; i++) {
              var name = markers[i].getAttribute("id");
              var address = markers[i].getAttribute("id");
              var type = markers[i].getAttribute("venue_type");
              var point = new google.maps.LatLng(
                  parseFloat(markers[i].getAttribute("lat")),
                  parseFloat(markers[i].getAttribute("lng")));
              var html = "<b>" + name + "</b> <br/>" + address;
              var icon = customIcons[type] || {};
              var marker = new google.maps.Marker({
                map: map,
                position: point,
                icon: icon.icon,
                shadow: icon.shadow
    
              });
              markersArray.push(marker);
              bindInfoWindow(marker, map, infoWindow, html);
            }
          });
    
    var markersArray = [];
    // create an empty bounds object
    var bounds = new google.maps.LatLngBounds();
    
    downloadUrl("eventsxml.php", function(data) {
        var xml = data.responseXML;
        var markers = xml.documentElement.getElementsByTagName("marker");
        for (var i = 0; i < markers.length; i++) {
          var name = markers[i].getAttribute("id");
          var address = markers[i].getAttribute("id");
          var type = markers[i].getAttribute("venue_type");
          var point = new google.maps.LatLng(
              parseFloat(markers[i].getAttribute("lat")),
              parseFloat(markers[i].getAttribute("lng")));
    
          // add each marker's location to the bounds
          bounds.extend(point);
          var html = "<b>" + name + "</b> <br/>" + address;
          var icon = customIcons[type] || {};
          var marker = new google.maps.Marker({
            map: map,
            position: point,
            icon: icon.icon,
            shadow: icon.shadow
    
          });
          markersArray.push(marker);
          bindInfoWindow(marker, map, infoWindow, html);
        }
        // center and zoom the map to fit the bounds
        map.fitBounds(bounds);
      });
    
    请注意,这不会更改地图的缩放级别

    代码片段:

    //以下示例创建复杂标记以指示附近的海滩
    //悉尼,新南威尔士州,澳大利亚。
    函数initMap(){
    const map=new google.maps.map(document.getElementById(“map”){
    缩放:10,
    中心:{
    lat:-33.9,
    液化天然气:151.2
    },
    });
    const infoWindow=new google.maps.infoWindow();
    var-markersArray=[];
    //创建一个空边界对象
    var bounds=new google.maps.LatLngBounds();
    //下载URL(“eventsxml.php”,函数(数据){
    //var xml=data.responseXML;
    var xml=parseXml(xmlString);
    var markers=xml.documentElement.getElementsByTagName(“标记”);
    对于(var i=0;i“+地址;
    var icon=customIcons[type]| |{};
    var marker=new google.maps.marker({
    地图:地图,
    位置:点,,
    icon:icon.icon,
    标题:姓名
    });
    markersArray.push(marker);
    bindInfoWindow(标记、地图、infoWindow、html);
    }
    //居中并缩放地图以适应边界
    映射边界(bounds);
    // });
    }
    //由名称、板条和场地类型组成的标记数据。
    常量xmlString='';
    var customIcons={
    海滩:{
    图标:“https://developers.google.com/maps/documentation/javascript/examples/full/images/beachflag.png",
    },
    城镇:{
    图标:“http://maps.google.com/mapfiles/ms/micons