天天看點

谷歌地圖的引用

1首先引入谷歌地圖的API <!--引用谷歌地圖API--> <script src= "http://maps.googleapis.com/maps/api/js?key=AIzaSyDY0kkJiTPVd2U7aTOAwhc9ySH6oHxOIYM&sensor=false" ></script> 注意這邊的key

2自定義初始化谷歌地圖的方法,并調用 InitGoogleMap(shopCoordinates),這裡由原來工程的ajax取到的資料。 shopCoordinates的内容如圖所示(參考時應根據不同場景适當改變)

谷歌地圖的引用

3, InitGoogleMap的方法: 擷取到第一條資料的值作為中心點 centerPointShopInfo,取到其對應的位址,和資訊。 定義地圖配置: var mapProp = {      //center:new google.maps.LatLng(51.508742,-0.120850),      center:new google.maps.LatLng(centerPointCoordinateArr[0], centerPointCoordinateArr[1]),      zoom:12,      mapTypeId:google.maps.MapTypeId.ROADMAP }; 定義地圖,帶入容器和配置 var map=new google.maps.Map(document.getElementById("map_canvas"),mapProp); 循環放入marker  如上面所見的參數是數組,地圖中可以添加多個marker。,通過 initGoogleMarker方法。

谷歌地圖的引用

4,initGoogleMarker方法 其中帶入了這幾個參數:點ggPoint,内容shopCoorDinateAddress,地圖map,第幾個num 重點:在方法外定義一個 iw_=null;用于存放之前的infoWindow,做個記錄為了防止打開多個iw function initGoogleMarker(ggPoint,shopCoordinateAddress,map,num){

var marker = "marker_"+num;   //生成元件名字

var infowindow = "infowindow_"+num;//生成元件名字

marker = new google.maps.Marker({

position:ggPoint,

icon:" ${base} /resources/shop/images/icon.png"

});

marker.setMap(map);

google.maps.event.addListener(marker, 'click', function() {

  if(iw_!=null){

      iw_.close();

     }//判斷是否為空   var iw = new google.maps.InfoWindow({content:            shopCoordinateAddress});   iw.open(map, marker); 

  iw_ = iw;//記錄之前打開的提示框

}); } 首先  var marker = "marker_”+num;是為了不同的iw,防止因為循環隻取到最後的東西。 marker定義了點與marker的樣式。 marker.setMap(map);将marker放入地圖裡。 添加谷歌提供的監聽器,如果iw_不為空則将上一個打開的iw_給關閉。重新打開。

這個功能亮點在于: 1,防止所有的marker的值都取到的是最後一個,通過命名時拼接num完成; 2,防止打開過多的infoWindow,通過監聽器與變量指派完成;

繼續閱讀