Javascript 我如何实现谷歌地图信息盒

Javascript 我如何实现谷歌地图信息盒,javascript,google-maps,google-maps-api-3,Javascript,Google Maps,Google Maps Api 3,我有一个谷歌地图设置,可以很好地与默认的信息窗口,但我正在寻找一些更具风格的东西,我想能够控制这个窗口的外观。我已经看过InfoBox示例和文档,但看不到如何在代码中实现这一点 Javascript: // Enable the visual refresh google.maps.visualRefresh = true; function initialize() { var myLatLng = new google.maps.LatLng(52.584489

我有一个谷歌地图设置,可以很好地与默认的信息窗口,但我正在寻找一些更具风格的东西,我想能够控制这个窗口的外观。我已经看过InfoBox示例和文档,但看不到如何在代码中实现这一点

Javascript:

// Enable the visual refresh
    google.maps.visualRefresh = true;

    function initialize() {
      var myLatLng = new google.maps.LatLng(52.58448934362705, -2.2128868103027344);
      var mapOptions = {
        zoom: 19,
        center: myLatLng,
        mapTypeId: google.maps.MapTypeId.SATELLITE
      };

      var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);

      var marker = new google.maps.Marker({
              map: map,
              draggable: false,
              animation: google.maps.Animation.DROP,
              position: new google.maps.LatLng(52.58448934362705, -2.2128868103027344),
              icon: {
                size: new google.maps.Size(32, 32),
                scaledSize: new google.maps.Size(32, 32),
                url: "marker.png"
              }
            });

      });



      setMarkers(map, obstacles);
    }

var obstacles = [
  ['The Start', -2.2128868103027344 ,52.58448934362705, 1, '<b>The Start</b>', 'bracken-maze-torture.jpg'],
  ['Chatway Chase', -2.2232937812805176,52.585369365082556, 1, '<b>Chatway Chase</b>', 'bracken-maze-torture.jpg'],
  ['Elephant Fence', -2.2287386655807495,52.585874554601546, 1, '<b>Elephant Fence</b>', 'bracken-maze-torture.jpg'],
  ['Elephant Fence', -2.2254180908203125,52.586862101811484, 1, '<b>Elephant Fence</b>', 'bracken-maze-torture.jpg'],
  ['Elephant Fence', -2.2167277336120605,52.58403954805975, 1, '<b>Elephant Fence</b>', 'bracken-maze-torture.jpg'],
  ['Elephant Fence', -2.216741144657135,52.58465231189634, 1, '<b>Elephant Fence</b>', 'bracken-maze-torture.jpg'],
  ['Rabbit Hill', -2.220606207847595,52.58593322139412, 1, '<b>Rabbit Hill</b>', 'bracken-maze-torture.jpg'],
  ['Brasher Disley Steplechase', -2.2237443923950195,52.58636018290797, 1, '<b>Brasher Disley Steplechase</b>', 'bracken-maze-torture.jpg'],
  ['Bracken Maze Torture', -2.228196859359741,52.58881105708316, 1, '<b>Bracken Maze Torture</b>', 'bracken-maze-torture.jpg'],
  ['The Slalom', -2.233647108078003,52.590078809218845, 1, '<b>The Slalom</b>', 'bracken-maze-torture.jpg'],
  ['Jungle Trench Battlefileds', -2.2293394804000854,52.5877551121424, 1, '<b>Jungle Trench Battlefileds</b>', 'bracken-maze-torture.jpg'],
  ['Gurkha Grand National', -2.23097562789917,52.58586803606421, 1, '<b>Gurkha Grand National</b>', 'bracken-maze-torture.jpg'],
  ['Jungle Water Slalom', -2.2270596027374268,52.58515425035844, 1, '<b>Jungle Water Slalom</b>', 'bracken-maze-torture.jpg'],
  ['Technospanner Legover', -2.2247743606567383,52.58636670137212, 1, '<b>Technospanner Legover</b>', 'bracken-maze-torture.jpg']  
];

function setMarkers(map, locations) {

    var image = {
      size: new google.maps.Size(32, 32),
      scaledSize: new google.maps.Size(32, 32),
      url: "marker.png"
    };

    var makeInfoWindow = function(marker, obs) {

      // Create info window. In content you can pass simple text or html code.
      var infowindow = new google.maps.InfoWindow({
        content: "<div style='width:220px; position:relative;'>" + obs[4] + "<img src='" +  + "'/></div>",
        maxWidth: 220,
      });



      var boxText = document.createElement("div");
      boxText.style.cssText = "border: 1px solid black; margin-top: 8px; background: yellow; padding: 5px;";
      boxText.innerHTML = "City Hall, Sechelt<br>British Columbia<br>Canada";

      var myOptions = {
         content: boxText
         ,disableAutoPan: false
         ,maxWidth: 0
         ,pixelOffset: new google.maps.Size(-140, 0)
        ,zIndex: null
        ,boxStyle: { 
            background: "url('tipbox.gif') no-repeat"
            ,opacity: 0.75
            ,width: "280px"
         }
         ,closeBoxMargin: "10px 2px 2px 2px"
         ,closeBoxURL: "http://www.google.com/intl/en_us/mapfiles/close.gif"
         ,infoBoxClearance: new google.maps.Size(1, 1)
         ,isHidden: false
         ,pane: "floatPane"
         ,enableEventPropagation: false
      };


      // Add listner for marker. You can add listner for any object. It is just an example in which I am specifying that infowindow will be open on marker mouseover
      google.maps.event.addListener(marker, "click", function() {
        infowindow.open(map, marker);
      });
    };

  for (var i = 0; i < locations.length; i++) {
    var obstacle = locations[i];
    var myLatLng = new google.maps.LatLng(obstacle[2], obstacle[1]);
    var marker = new MarkerWithLabel({
        position: myLatLng,
        map: map,
        icon: image,
        title: obstacle[0],
        zIndex: obstacle[3],
        labelContent: i + 1,
        labelAnchor: new google.maps.Point(14, 29),
        labelClass: "labels"
    });
    makeInfoWindow(marker, obstacle);
  }
}

google.maps.event.addDomListener(window, 'load', initialize);
//启用可视刷新
google.maps.visualRefresh=true;
函数初始化(){
var mylatng=new google.maps.LatLng(52.58448934362705,-2.2128868103027344);
变量映射选项={
缩放:19,
中心:myLatLng,
mapTypeId:google.maps.mapTypeId.SATELLITE
};
var map=new google.maps.map(document.getElementById('map-canvas'),mapOptions);
var marker=new google.maps.marker({
地图:地图,
可拖动:错误,
动画:google.maps.animation.DROP,
位置:new google.maps.LatLng(52.58448934362705,-2.2128868103027344),
图标:{
大小:新的google.maps.size(32,32),
scaledSize:新的google.maps.Size(32,32),
url:“marker.png”
}
});
});
设置标记(地图、障碍物);
}
var障碍=[
[TheStart',-2.2128868103027344,52.58448934362705,1,'TheStart','BrackenMaze.jpg'],
[Chatway Chase',-2.2232937812805176,52.585369365082556,1,'Chatway Chase','bracken迷宫酷刑.jpg',
[2.2287386655807495,52.585874554601546,1,'大象围栏',-2.2287386655807495,52.585874554601546,1,'大象围栏','bracken迷宫酷刑.jpg'],
[2.2254180908203125,52.586862101811484,1,'大象围栏',-2.2254180908203125,52.586862101811484,1,'大象围栏','bracken迷宫酷刑.jpg'],
[2.216727336120605,52.58403954805975,1,'大象围栏',-2.216727736120605,52.58403954805975,1,'大象围栏','bracken迷宫酷刑.jpg'],
[2.21674144657135,52.58465231189634,1,“大象篱笆”,“布雷肯迷宫酷刑”,jpg'],
[Rabbit Hill',2.220606207847595,52.58593322139412,1',Rabbit Hill',bracken迷宫酷刑.jpg'],
[Brasher-Disley Steplechase',-2.223744392350195,52.58636018290797,1,'Brasher-Disley Steplechase','bracken迷宫酷刑.jpg'],
[2.228196859359741,52.58881105708316,1,'Bracken迷宫酷刑',-2.228196859359741,52.58881105708316,1,'Bracken迷宫酷刑','Bracken迷宫酷刑.jpg'],
[The Slolom',-2.233647108078003,52.59007809218845,1'The Slolom','bracken迷宫酷刑.jpg'],
[Jungle Trench Battleds',-2.229334804000854,52.5877551121424,1,'Jungle Trench Battleds','bracken迷宫酷刑.jpg',
['Gurkha Grand National',-2.23097562789917,52.5858680306421,1,'Gurkha Grand National','bracken maze酷刑.jpg',
[2.22705906027374268,52.585154252035844,1,'丛林水上回旋',-2.2270596027374268,52.585154252035844,1,'布雷肯迷宫酷刑',
['TechnoPaner Legover',-2.2247743606567383,52.58636670137212,1'TechnoPaner Legover','bracken迷宫酷刑.jpg']
];
功能设置标记(地图、位置){
变量图像={
大小:新的google.maps.size(32,32),
scaledSize:新的google.maps.Size(32,32),
url:“marker.png”
};
var makeInfoWindow=函数(标记,obs){
//创建信息窗口。在内容中,您可以传递简单的文本或html代码。
var infowindow=new google.maps.infowindow({
内容:“+obs[4]+”,
最大宽度:220,
});
var-boxText=document.createElement(“div”);
boxText.style.cssText=“边框:1px纯黑色;页边距顶部:8px;背景:黄色;填充:5px;”;
boxText.innerHTML=“加拿大不列颠哥伦比亚省第二市政厅”;
变量myOptions={
内容:boxText
,disableAutoPan:false
,最大宽度:0
,pixelOffset:new google.maps.Size(-140,0)
,zIndex:null
,boxStyle:{
背景:“url('tipbox.gif')不重复”
,不透明度:0.75
,宽度:“280px”
}
,closeBoxMargin:“10px 2px 2px 2px”
,closeBoxURL:“http://www.google.com/intl/en_us/mapfiles/close.gif"
,infoBoxClearance:newgoogle.maps.Size(1,1)
,isHidden:错
,窗格:“浮动窗格”
,enableEventPropagation:false
};
//为marker添加listner。您可以为任何对象添加listner。这只是一个示例,其中我指定infowindow将在marker鼠标上方打开
google.maps.event.addListener(标记“单击”,函数(){
信息窗口。打开(地图、标记);
});
};
对于(变量i=0;i

简单多段线
#地图画布,#地图画布{
高度:800px;
}
.信息盒包装{
显示:无;
}
.infobox、.infobox{
边缘顶部:8px;
背景:#FFF;
颜色:#666;
字体系列:Arial、Helvetica、无衬线字体;
字体大小:12px;
填充物:5em 1em;
-webkit边界半径:2px;
-moz边界半径:2px;
边界半径:2px;
-网络工具包盒阴影:0 0 8px#000;
盒影:0 0 8px#000;
}
.标签{
颜色:#FFF;
字体系列:“Arial”,无衬线;
文本对齐:居中;
宽度:26px;
空白:nowrap;
字母间距:0;
}
//启用可视刷新
google.maps.visualRefresh=true;
var障碍=[
[“开始”,-2.2128868103027344,52.58448934362705,1,“开始”,
[Chatway Chase',2.2232937812805176,52.585369365082556,1,'Chatway Chase',2],
[‘大象围栏’,-2.22873866558
<!DOCTYPE html>
<html>
  <head>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
    <meta charset="utf-8">
    <title>Simple Polylines</title>
    <style>
    #map-canvas, #map_canvas {
      height: 800px;
    }
    .infobox-wrapper {
    display:none;
    }
    .infobox, .infoBox {
        margin-top: 8px;
        background:#FFF;
        color:#666;
        font-family:Arial, Helvetica, sans-serif;
        font-size:12px;
        padding: .5em 1em;
        -webkit-border-radius: 2px;
        -moz-border-radius: 2px;
        border-radius: 2px;
        -webkit-box-shadow: 0 0  8px #000;
        box-shadow: 0 0 8px #000;
    }
    .labels {
       color: #FFF;
       font-family: "Arial", sans-serif;
       text-align: center;
       width: 26px;
       white-space: nowrap;
       letter-spacing: 0;
     }
    </style>
    <script src="http://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
    <script type="text/javascript" src="http://google-maps-utility-library-v3.googlecode.com/svn/trunk/infobox/src/infobox.js"></script>
    <script type="text/javascript" src="http://google-maps-utility-library-v3.googlecode.com/svn/tags/markerwithlabel/1.1.5/src/markerwithlabel_packed.js"></script>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>

    <script>
    // Enable the visual refresh
    google.maps.visualRefresh = true;




var obstacles = [
  ['The Start', -2.2128868103027344 ,52.58448934362705, 1, '<h2>The Start</h2>', 1],
  ['Chatway Chase', -2.2232937812805176,52.585369365082556, 1, '<h2>Chatway Chase</h2>', 2],
  ['Elephant Fence', -2.2287386655807495,52.585874554601546, 1, '<h2>Elephant Fence</h2>', 3],
  ['Elephant Fence', -2.2254180908203125,52.586862101811484, 1, '<h2>Elephant Fence</h2>', 4],
  ['Elephant Fence', -2.2167277336120605,52.58403954805975, 1, '<h2>Elephant Fence</h2>', 5],
  ['Elephant Fence', -2.216741144657135,52.58465231189634, 1, '<h2>Elephant Fence</h2>', 6],
  ['Rabbit Hill', -2.220606207847595,52.58593322139412, 1, '<h2>Rabbit Hill</h2>', 7],
  ['Brasher Disley Steplechase', -2.2237443923950195,52.58636018290797, 1, '<h2>Brasher Disley Steplechase</h2>', 8],
  ['Bracken Maze Torture', -2.228196859359741,52.58881105708316, 1, '<h2>Bracken Maze Torture</h2>', 9],
  ['The Slalom', -2.233647108078003,52.590078809218845, 1, '<h2>The Slalom</h2>', 10],
  ['Jungle Trench Battlefileds', -2.2293394804000854,52.5877551121424, 1, '<h2>Jungle Trench Battlefileds</h2>', 11],
  ['Gurkha Grand National', -2.23097562789917,52.58586803606421, 1, '<h2>Gurkha Grand National</h2>', 12],
  ['Jungle Water Slalom', -2.2270596027374268,52.58515425035844, 1, '<h2>Jungle Water Slalom</h2>', 13],
  ['Technospanner Legover', -2.2247743606567383,52.58636670137212, 1, '<h2>Technospanner Legover</h2>', 14]  
];

    function initialize() {
      var myLatLng = new google.maps.LatLng(52.58448934362705, -2.2128868103027344);
      var mapOptions = {
        zoom: 19,
        center: myLatLng,
        mapTypeId: google.maps.MapTypeId.SATELLITE
      };

      var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);

    var infobox = new InfoBox({
      map: map,
         disableAutoPan: false,
         maxWidth: 150,
         pixelOffset: new google.maps.Size(-140, -40),
         zIndex: null,
         alignBottom: true,
         boxStyle: {
            width: "280px"
        },
        closeBoxMargin: "-16px -20px 0px 0px",
        closeBoxURL: "interactive-map-info-close.png",
        infoBoxClearance: new google.maps.Size(1, 1)

    });

      setMarkers(map, infobox);
    }



function setMarkers(map, infobox) {

  var image = {
    size: new google.maps.Size(38, 38),
    scaledSize: new google.maps.Size(38, 38),
    url: "marker.png"
  };



  for (var i = 0; i < obstacles.length; i++) {
    var obstacle = obstacles[i];
    var data = obstacle[0];
    var index = obstacle[5];
    var myLatLng = new google.maps.LatLng(obstacle[2], obstacle[1]);
    var marker = new MarkerWithLabel({
        position: myLatLng,
        map: map,
        icon: image,
        title: obstacle[0],
        zIndex: obstacle[3],
        labelContent: i + 1,
        labelAnchor: new google.maps.Point(13, 33),
        labelClass: "labels"
    });
  google.maps.event.addListener(marker, 'click', (function(marker, data) {
        return function() {
          infobox.setContent(data);
          infobox.open(map, marker)        
        }
      })(marker, data));
  }
}


google.maps.event.addDomListener(window, 'load', initialize);
    </script>
  </head>
  <body>
    <div id="map-canvas"></div>


  </body>
</html>