自定义控制Google Maps API v3的最佳实践

Nou*_*oud 6 javascript google-maps custom-controls google-maps-api-3

我搜索过很多关于为Google Maps Api v3创建自定义控件的内容,我发现其他人将其用作 Google文档.他们创建div并使用JS来设计它,我认为这不是一个好习惯.我认为这违反了关注点的分离设计原则我的意思是,在JS或HTML中编写CSS代码.

除了最佳实践问题,我已尝试从上面的链接中的代码示例,但它不起作用它引发了以下错误:

( **Uncaught TypeError: Cannot read property 'zIndex' of undefined** ) .. 
Run Code Online (Sandbox Code Playgroud)

这是放置[ 缩放 ]按钮的代码.

HTML文件

  <div id="control-div" class="control-div">
  <div id= "control-ui" class="control-ui" title = "Click to set the map to Home">
    <div id="control-text" class="control-text">
      <p> Zoom </p>
    </div>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

CSS文件

.control-ui{
  background-color: white;
  border-style: solid;
  border-width: 2px;
  cursor: pointer;
  text-align: center;
  width: 90px;
  height: 30px;
}
.control-text{
  front-family: Arial,sans-serif;
  font-size: 12px;
  padding: 4px 4px;
}
Run Code Online (Sandbox Code Playgroud)

JS文件(谷歌地图初始化程序)

  var controlDiv =$("#control-div");
  var controlUI = $("#control-ui");
  var controlText = $("#control-text");
  controlUI.click(function() {
    map.setZoom(11);
  });
  controlDiv.index = 1;
  map.controls[google.maps.ControlPosition.TOP_RIGHT].push(controlDiv);
Run Code Online (Sandbox Code Playgroud)

Dr.*_*lle 13

控件应该是一个DOMNode,但是你提供了一个jQuery对象.

这应该工作:

map.controls[google.maps.ControlPosition.TOP_RIGHT].push(controlDiv[0]);
Run Code Online (Sandbox Code Playgroud)

  • 当然这只是我自己的看法,但我总是喜欢通过全局CSS应用样式而不是通过JS设置它.特别是对于自定义控件,需要一个独特的样式(通常基于mapType-control的样式),全局CSS应该更好. (2认同)