tinyMap: Address list of markers
by essoduke chang
HTML
<script src="http://maps.google.com/maps/api/js?sensor=false&language=zh-TW"></script>
<script src="http://app.essoduke.org/js/tinyMap/jquery.tinyMap-2.8.4.min.js"></script>
<ul id="list">
<li>點選:</li>
<!-- 建立地址清單 -->
<li><a href="#">新光三越</a></li>
<li><a href="#">台北市政府</a></li>
<li><a href="#">台北車站</a></li>
</ul>
<div id="map"></div>
CSS
#list {margin:0 0 10px 0;padding:0}
#list li{display:inline-block}
#list li a{padding: 4px;background-color:gray;color:white;text-decoration:none}
#list li a:hover{background:black}
#map{width:100%;height:300px}
JavaScript
var map = $('#map');
map.tinyMap({
'center': {
'x': '25.04151536540612',
'y': '121.56354904174805'
},
'zoom': 13,
'direction':[
{
'from': '台北市信義區松壽路9號',
'to': '台北市信義區松壽路200號',
'waypoint': ['台北市信義區松壽路9號', '台北市信義區松壽路200號'],
'travel': 'driving'
}
],
'marker': [
/* 給予每個標記唯一的 id 值 */
{'addr': '台北市信義區松壽路9號', 'text': '新光三越', 'id': '新光三越'},
{'addr': '台北市政府', 'text': '台北市政府', 'id': '台北市政府'},
{'addr': '台北車站', 'text': '台北車站', 'id': '台北車站'}
]
});
$('#list').on('click', 'a', function () {
var obj = $(this),
id = obj.text(),
m = {},
marker = {},
markers = [],
i = 0;
// 放大移動點
map.tinyMap('modify', {zoom: 15});
// 移動地圖
// 以新光三越為例,因為給予的地址(id)太籠統,所以不建議用此方式移動地圖。
// 改為下方 m.map.panTo(marker); 直接移動到符合 ID 的標記位置比較好。
// map.tinyMap('panto', id);
// 取得 tinyMap 實例
m = map.data('tinyMap');
// 取得所有標記
markers = m._markers;
for (i; i < markers.length; i += 1) {
marker = markers[i];
// 關閉所有 infoWindow
marker.infoWindow.close();
console.dir(typeof marker.infoWindow.close);
// 若標記 id 符合則開啟 infoWindow
if (id === marker.id) {
marker.infoWindow.open(m.map, marker);
// 移動地圖至符合的標記位置
m.map.panTo(marker.position);
}
}
});