0

古いコードを最新の Google Maps API で動作させようとしています。しかし、おそらく質問をしている大多数の人々と同様に、API はおろか Javascript の経験もありません。誰かが助けてくれれば、これを適切に機能させるための助けをいただければ幸いです。ありがとう..

モジュールは、DNN 用の XMod Pro モジュールです。これにより、多くのオプションが可能になり、Web ページなどのアイテムを作成するための非常に強力なモジュールになります。以前、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>
4

1 に答える 1

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 for Overlays and Markers

申し訳ありませんが、XMode Pro についてはわかりませんが、古い API と新しい API とのいくつかの違いに注意してください。

于 2012-05-29T19:54:25.153 に答える