【问题标题】:XMod Pro - DotNetNuke - Google MapsXMod Pro - DotNetNuke - 谷歌地图
【发布时间】:2012-05-29 19:36:13
【问题描述】:

我正在尝试让一些旧代码与最新的 Google Maps API 一起使用。但可能像大多数提问的人一样,对 Javascript 的经验为零,更不用说 API。 如果有人可以提供帮助,我将不胜感激任何帮助使其正常工作。谢谢..

该模块是 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>

【问题讨论】:

    标签: javascript google-maps-api-3 dotnetnuke


    【解决方案1】:

    它会在 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 Pro,但也许您会注意到旧 API 与新 API 的一些差异。

    【讨论】:

    • 您好,谢谢您的回复。 Firebug 报告“a 未定义”。然后该状态下方的行: ed(a=undefined, b="click")-Line 146 Main.js v(a=undefined, b="click", c=undefined) Line 148 Main.js myGclick(i= NaN) onclick(event=click clientX=274, clientY=213)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多