代码改变世界

google maps 控件controller

2012-09-26 22:08  youxin  阅读(788)  评论(0编辑  收藏  举报

控件概述

Google Maps 上的地图包含用户界面元素,可以让用户通过地图进行交互。这些元素称为“控件”。您可以在 Google Maps API 应用程序中添加这些控件的多种组合。或者,您也可以不进行任何操作,让 Google Maps API 处理所有控件行为。

Google Maps API 带有大量可以在地图中使用的内置控件:

  • 缩放控件会显示一个滑块(对于大型地图)或小型的“+/-”按钮(对于小型地图),用于控制地图的缩放级别。在非触摸的设备上,该控件默认显示在地图的左上角,而在触摸设备上则会出现在左下角。
  • 平移控件显示了用于平移地图的按钮。在非触摸的设备上,该控件默认显示在地图的左上角。您还可以使用平移控件对图像进行 45° 旋转(如果可用的话)。
  • 比例控件,用于显示地图比例元素。默认情况下,系统不会启用此控件
  • MapType 控件,可让用户在不同的地图类型(例如 ROADMAP 和 SATELLITE)之间进行切换。该控件默认显示在地图的右上角。
  • Street View 控件包含一个街景小人图标,将该图标拖动到地图上即可启用 Street View。该控件默认显示在地图的左上角。
  • 旋转控件包含一个较小的圆形图标,可让您旋转包含斜面图像的地图。该控件默认显示在地图的左上角(有关详情,请参见 45° 图像)。
  • 总览图控件会显示一个简略的总览图,用于在更广阔区域内反映当前的地图视口。该控件默认以压缩状态显示在地图的右下角。

请注意:以前提供的导航控件已弃用,系统已将其分割为独立的缩放和平移控件。

您无法直接访问或修改这些地图控件,而应修改地图的 MapOptions 字段,这些字段会影响控件的可见性和显示方式。您可以在初始化地图时调整控件的显示(使用适当 MapOptions),或者通过调用 setOptions() 以更改地图的选项,对地图进行动态修改。

默认情况下,系统并不会启用所有这些控件。要了解有关默认用户界面行为(以及如何修改此类行为)的信息,请参阅下面的默认用户界面部分

默认用户界面

您可能只想指定自己的地图展示 Google Maps 界面的外观(其中包括以后要添加到地图中的所有新特征或控件),而不想指定和设置单独的控件。要实现此行为,您无需进行任何操作。地图将会显示默认控件。

停用默认用户界面

有时,您可能希望关闭 API 的默认用户界面设置。要进行上述操作,请将 Map 的 disableDefaultUI 属性(在 Map options 对象中)设置为 true。此属性可停用 Google Maps API 中所有自动执行的用户界面行为。

以下代码可彻底停用默认用户界面

function initialize() {
  var myOptions = {
    zoom: 4,
    center: new google.maps.LatLng(-33, 151),
    disableDefaultUI: true,
    mapTypeId: google.maps.MapTypeId.ROADMAP  
  }
  var map = new google.maps.Map(document.getElementById("map_canvas"),
       myOptions);
}

向地图添加控件

您可能想要通过删除、添加或修改用户界面行为或控件调整您的界面,并确保即使以后进行了更新,也不会改变这种行为。如果您只想添加或修改现有的行为,您需要确保以显式的方式将相应的控件添加到自己的应用程序中。

有些控件在默认情况下会出现在地图上,而其他控件则只有在您明确提出相关请求后,才会显示出来。在地图中添加控件,或者从地图中删除控件都是在以下 Map options 对象的字段中指定的,您可以将这些字段设置为 true 以显示相应的控件,或者设置为 false 以隐藏相应的控件

{
  panControl
:boolean,
  zoomControl
:boolean,
  mapTypeControl
:boolean,
  scaleControl
:boolean,
  streetViewControl
:boolean,
  overviewMapControl
:boolean
}
scaleControl在左下角,显示地图的比例。
以下示例对地图进行了设置,使其隐藏导航(缩放和平移)控件,同时显示比例控件。请注意,我们并未显式停用默认用户界面,因此,您可在默认用户界面行为中加入这些修改。
function initialize() {
  var myOptions = {
    zoom: 4,
    center: new google.maps.LatLng(-33, 151),
    panControl: false,
    zoomControl: false,
    scaleControl: true,
    mapTypeId: google.maps.MapTypeId.ROADMAP
  }
  var map = new google.maps.Map(document.getElementById("map_canvas"),
        myOptions);
}

...via:https://developers.google.com/maps/documentation/javascript/controls