2012-05-29 19 views
0

我試圖讓一些舊的代碼與最新的Google Maps API一起工作。但是可能像大多數人提出問題一樣,對Javascript沒有經驗,更不用說API了。 如果有人可以協助,我將不勝感激任何幫助正確地工作。謝謝..XMod Pro - DotNetNuke - 谷歌地圖

該模塊是用於DNN的XMod Pro模塊。這可以讓你有很多選擇,而且它是一個非常強大的模塊,可以爲你的網頁創建項目等。之前,有人發佈了關於如何讓Google Maps API在XMod Pro中工作的信息。緯度和長度的位置信息來自數據庫,用戶輸入有關位置的信息。然後將這些標記放在地圖上;這也是頁面上的標準DIV。 XMod Pro使用雙括號標記此數據庫信息;例如[[Title]]爲標題。

當有人點擊位置標題的鏈接時,它會將它們帶到地圖上的該位置,並在彈出窗口中向他們顯示信息(同樣來自 數據庫)。這部分不工作;也沒有任何標記信息。

我認爲問題出在JavaScript上,但究竟是什麼導致了這些問題,我不知道。

以下是XMod Pro代碼,大部分相關信息都存儲在。再次感謝您..

<headertemplate> 
     <a name="HeaderTop"></a> 
     <div width="150px" height="40px" style="color:black;background- 
color:white;padding-bottom:10px;font-family:Georgia;font-size: 
14px"><strong>Click an Item</strong></div> 
    </headertemplate> 
    <itemtemplate> 
     <script type="text/javascript"> 
     var i = i + 1; 
     x[i] = [[Lat]]; 
     y[i] = [[Long]]; 
     d[i] = '<table><tr><td>[[Title]]</td></ 
tr><tr><td>[[Description]]</td></tr><tr><td>[[Country]]</td></ 
tr><tr><td>[[Region]]</td></tr><tr><td>[[Email]]</td></tr></table>'; 
     document.write('<div style="padding-bottom: 
8px;color:black;background-color:white" width="150px" 
onclick="myGclick(' + i + ');">') 
     </script> 

     <strong> 
     <table> 
     <tr><td colspan="2"><a href="#HeaderTop"><div style="color: 
#a41d21;font-size: 13px">[[Title]]</div></a></td></tr> 
     <tr><td colspan="2">[[Description]]</td></tr> 
     <tr><td>[[Country]]</td><td>[[Region]]</td></tr> 
     </table> 
     </div> 

     <xmod:scriptblock scriptid="GoogleMapScripts" 
registeronce="true" blocktype="ClientScript"> 
     <script src="http://maps.google.com/maps? 
file=api&amp;v=2.x&amp;key=ABQIAAAAHrao_r7BKX4cQI0SxCQVHxRXbr2uTTbz5TwhEXAt1Cz65pgUPxQJAHBbHO1MuQeh5aRNkFOL- 
Ozptw" type="text/javascript"></script> 
     <script type="text/javascript"> 
      //<![CDATA[ 

      var map = null; 
      var geocoder = null; 
      var x=new Array() 
      var y=new Array() 
      var d=new Array() 
      var myGclick = []; 
      var gmarkers = []; 

      // This function picks up the click and opens the corresponding info window 
      myGclick = function myGclick(i) { 
      GEvent.trigger(gmarkers[i], "click"); 
      } 

      oldLoad = window.onload; 
      window.onload = function load(){ 
      if(oldLoad){ 
      oldLoad(); 
      } 
      if (GBrowserIsCompatible()) { 
       var map = new GMap2(document.getElementById("map")); 
       map.setCenter(new GLatLng(40, -98), 3); 
       map.addControl(new GLargeMapControl()); 
       map.addControl(new GMapTypeControl()); 
       map.addControl(new GOverviewMapControl()); 

       // Creates a marker at the given point with the given number label 
       function createMarker(point, d) { 
       var marker = new GMarker(point); 
       GEvent.addListener(marker, "click", function() { 
        marker.openInfoWindowHtml(d); 
       }); 
       // save the info we need to use later for the side_bar 
       gmarkers[i] = marker; 
       return marker; 
       } 

       for (var i = 0; i < 999; i++) { 
       var point = new GLatLng(x[i], 
          y[i]); 
       if ((x[i] == undefined)){break} 
       map.addOverlay(createMarker(point, d[i])); 
       } 
} 
} 
    //]]> 
    </script> 
    </xmod:scriptblock> 

</itemtemplate> 

    <footertemplate> 

    </footertemplate> 
    <noitemstemplate> 
    <strong>nothing in table</strong> 
    </noitemstemplate> 

    <detailtemplate> 
    </detailtemplate> 

    </xmod:template> 

回答

0

它是否會在Inspector或Firebug中引發任何錯誤/消息?

在Google Maps API V5中,我的addMarker代碼如下所示,其中我已將infoWindow內容直接放入標記中。

function addMarker(map, latitude, longitude, heading, title, content){ 

     var latlong = new google.maps.LatLng(latitude, longitude); 
     var markerOptions = { 
     position: latlong, 
     map: map, 
     title: title, 
     clickable: true, 
     icon: 'marker.png', 
    }; 

     //create marker object 
     var marker = new google.maps.Marker(markerOptions); 
     var infoWindowOptions = { 
     content: content, 
     position: latlong 
    }; 

     //info window object 
    var infoWindow = new google.maps.InfoWindow(infoWindowOptions); 

     //add click event listener on marker, to bring up infoWindow 
    google.maps.event.addListener(marker, "click",function(){ 
     infoWindow.open(map); 
    }); 
} 

當我在做這個,我用了很多文件在這裏:developers.google.com/maps/documentation/javascript/overlays重疊式廣告和標記

對不起,我不知道XMODE臨,但也許你可以注意,從一些分歧舊的API到新的。

+0

你好,謝謝你的回覆。 Firebug報告「a未定義」。然後,下面的行的狀態: ed(a = undefined,b =「click」) - 第146行Main.js v(a = undefined,b =「click」,c = undefined)Line 148 Main.js myGclick (i = NaN)onclick(event = click clientX = 274,clientY = 213) – user1424532