2

我写了一个谷歌地图查找页面。在我引用该页面以使用母版页之前,一切都很好。我从母版页中删除了表单标签,因为地图页面上的搜索按钮是一个提交按钮。我页面上的所有其他内容都会出现,但谷歌地图 div 会出现地图导航控件和徽标,但不会出现地图视觉效果。

我用以前的非母版页版本重新测试,地图正确显示。对我所缺少的有什么想法吗?

4

7 回答 7

1

请查看下面的代码,让我知道它有用...

MasterPage 代码(GMap.master 页面)

< body onload="initialize()"  onunload="GUnload()"  >  
< form id="form1" runat="server" >
    < div >
        < asp:contentplaceholder id="ContentPlaceHolder1" runat="server" >
        < /asp:contentplaceholder >
    < /div >
    < /form >
< /body >  

GMatTest.aspx 使用的页面 GMap.Master 页面

< %@ Page Language="C#" MasterPageFile="~/MasterPages/GMap.master" AutoEventWireup="true"
    CodeFile="GMapTest.aspx.cs" Inherits="GMapTest" Title="Google Map Page" % >


< asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server" >


    < script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=< % = AppConfig.GoogleMapApiKey % >"
        type="text/javascript" >< /script >

    < script type="text/javascript" >

    var map = null;
    var geocoder = null;
    var latsgn = 1;
    var lgsgn = 1;
    var zm = 0; 
    var marker = null;    

    function initialize()
     {
      if (GBrowserIsCompatible()) 
      {
       var latitude=  "";
       var longitude= "";

       map = new GMap2(document.getElementById("map_canvas"));


         var center = new GLatLng(0,0);
         map.setCenter(center, 17);

         map.addControl(new GLargeMapControl());
        map.addControl(new GScaleControl());
        map.enableScrollWheelZoom();

        map.addControl(new GMapTypeControl());

        map.enableDoubleClickZoom();

         marker = new GMarker(center,{draggable: true});

         geocoder = new GClientGeocoder();


       GEvent.addListener(marker, "dragend", function() {
        var point = marker.getLatLng();
         marker.openInfoWindowHtml("Latitude: " + point.y + "< /br > Longitude: " + point.x  );
      });

       GEvent.addListener(marker, "click", function() {
        var point = marker.getLatLng();        

      });


        map.addOverlay(marker);
        GEvent.trigger(marker, "click");

        if (latitude  > 0 &&  longitude  > 0)
        {
        }
        else
        {       

            showAddress();

        }
      }
     }

下面的部分是继续所以请也复制它

function showAddress() 
{
     var isAddressFound=false;  
     var companyAddress = '';  
     var address='satyam mall, vastrapur, ahmedabad, gujrat, india';  
     if (geocoder)   
    {  
         geocoder.getLatLng(address,function(point) {   
                             if (!point) {  
                            alert(address + " not found");  

                             } else {  
                                isAddressFound =true;  
                             map.setCenter(point,17);  
                             zm = 1;  
                             marker.setPoint(point);  
                             GEvent.trigger(marker, "click");  
                             }  
                         }  
         );  



//If address not found then redirect to company address

     if(!isAddressFound)
     {     
         geocoder.getLatLng(companyAddress,
         function(point) { 
         if (!point) { 
         } else {
            isAddressFound =true;
         map.setCenter(point,17);
         zm = 1;
         marker.setPoint(point);
         GEvent.trigger(marker, "click");
         }
         }
         );
     }
 }
}
< /script >

< div id="map_canvas" style="width: 100%; height: 425px" >
< /div >
< /asp:Content >
于 2008-12-31T07:14:38.953 回答
1

这是我使用的代码。在这里可以正常工作,但是每当我添加母版页时,它都不会执行任何使用功能

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
        <title>Find latitude and longitude with Google Maps</title>
      <script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=ABQIAAAAPkZq56tNYNmeuZjNQQ2p3hT0NZP-HbfQNNfWb9Z5SLbjZKYKwBTrGBqtttFmF2d-kWv2B2nqW_NyEQ"
      type="text/javascript"></script>
    <script type="text/javascript">

 function load() {
      if (GBrowserIsCompatible()) {
        var map = new GMap2(document.getElementById("map"));
        map.addControl(new GSmallMapControl());
        map.addControl(new GMapTypeControl());
        var center = new GLatLng(48.89364,      2.33739);
        map.setCenter(center, 15);
        geocoder = new GClientGeocoder();
        var marker = new GMarker(center, {draggable: true});  
        map.addOverlay(marker);
        document.getElementById("lat").innerHTML = center.lat().toFixed(6);
        document.getElementById("lng").innerHTML = center.lng().toFixed(6);

      GEvent.addListener(marker, "dragend", function() {
       var point = marker.getPoint();
          map.panTo(point);
       document.getElementById("lat").innerHTML = point.lat().toFixed(6);
       document.getElementById("lng").innerHTML = point.lng().toFixed(6);

        });


     GEvent.addListener(map, "moveend", function() {
          map.clearOverlays();
    var center = map.getCenter();
          var marker = new GMarker(center, {draggable: true});
          map.addOverlay(marker);
          document.getElementById("lat").innerHTML = center.lat().toFixed(6);
       document.getElementById("lng").innerHTML = center.lng().toFixed(6);


     GEvent.addListener(marker, "dragend", function() {
      var point =marker.getPoint();
         map.panTo(point);
      document.getElementById("lat").innerHTML = point.lat().toFixed(6);
         document.getElementById("lng").innerHTML = point.lng().toFixed(6);

        });

        });

      }
    }

       function showAddress(address) {
       var map = new GMap2(document.getElementById("map"));
       map.addControl(new GSmallMapControl());
       map.addControl(new GMapTypeControl());
       if (geocoder) {
        geocoder.getLatLng(
          address,
          function(point) {
            if (!point) {
              alert(address + " not found");
            } else {
          document.getElementById("lat").innerHTML = point.lat().toFixed(6);
       document.getElementById("lng").innerHTML = point.lng().toFixed(6);
         map.clearOverlays()
            map.setCenter(point, 14);
   var marker = new GMarker(point, {draggable: true});  
         map.addOverlay(marker);

        GEvent.addListener(marker, "dragend", function() {
      var pt = marker.getPoint();
         map.panTo(pt);
      document.getElementById("lat").innerHTML = pt.lat().toFixed(6);
         document.getElementById("lng").innerHTML = pt.lng().toFixed(6);
        });


     GEvent.addListener(map, "moveend", function() {
          map.clearOverlays();
    var center = map.getCenter();
          var marker = new GMarker(center, {draggable: true});
          map.addOverlay(marker);
          document.getElementById("lat").innerHTML = center.lat().toFixed(6);
       document.getElementById("lng").innerHTML = center.lng().toFixed(6);

     GEvent.addListener(marker, "dragend", function() {
     var pt = marker.getPoint();
        map.panTo(pt);
    document.getElementById("lat").innerHTML = pt.lat().toFixed(6);
       document.getElementById("lng").innerHTML = pt.lng().toFixed(6);
        });

        });

            }
          }
        );
      }
    }
    </script>
  </head>


<body onload="load()" onunload="GUnload()" >

<p>This page uses the Google Maps API to find out accurate geographical coordinates (latitude and longitude) for any place on Earth. <br/>It provides two ways to search, either by moving around the map and zooming in, or by typing an address if the place is unknown.<br/>
<i>
    <p> The default location and address are those of Mondeca office in Paris.<br />
   <p><b> Find coordinates by moving around the map</b></p> <p>1. Drag and drop the map to broad location. <br/>
    2. Zoom in for greater accuracy. <br/>
    3. Drag and drop the marker to pinpoint the place. The coordinates are refreshed at the end of each move.  </p>

  <form action="#" onsubmit="showAddress(this.address.value); return false">
     <p>        
      <input type="text" size="60" name="address" value="3 cit&eacute; Nollez Paris France" />
      <input type="submit" value="Search!" />
      </p>
    </form>

 <p align="left">

 <table  bgcolor="#FFFFCC" width="300">
  <tr>
    <td width="100"><b>Latitude</b></td>
    <td id="lat"></td>
  </tr>
  <tr>
    <td width="100"><b>Longitude</b></td>
    <td id="lng"></td>
  </tr>
</table>
 </p>
  <p>
  <div align="center" id="map" style="width: 600px; height: 400px"><br/></div>
   </p>
  </body>
</html>
于 2010-03-08T13:02:31.483 回答
1

这是与上面提到的相同的问题。当我使用母版页时,没有绘制谷歌地图。后来我找到了解决方案。

您需要在要显示谷歌地图的 .aspx 页面中调用 Javascript 函数(如initialize();),在您的情况下可能会有所不同。

在我的情况下的代码:

<script type="text/javascript"">
    window.onload = function () {
        DrawGoogleMap();
    }

    function DrawGoogleMap() {
        if (GBrowserIsCompatible()) {
            map = new GMap2(document.getElementById("GoogleMap_Div"));
            geocoder = new GClientGeocoder();

            GService.GetGoogleObject(fGetGoogleObject);
        }
    } 

</script>
于 2012-04-14T13:29:51.020 回答
0

添加母版页时可能会改变的一件事是您的元素 ID。

如果您在其中显示地图的 div 上runat="server"有,您可能会遇到问题。您将添加该标签,以便您可以从代码隐藏中操作 div。

所以,如果我的 div 看起来像这样:

<div id="gmap" runat="server"></div>

如果是这样,在初始化地图时,需要获取 div 的 ClientId。看起来像这样:

var mapDiv = '<%= gmap.ClientID %>';
var map = new GMap2(mapDiv);
于 2008-12-18T17:57:15.410 回答
0

加载 FireFox 和 FireBug,开始寻找 javascript 错误。我发现的一项,您必须在地图上调用 setCenter 才能显示。此外,如果要添加标记(或图层),则必须在调用 setCenter 后添加标记。

于 2008-12-18T20:06:10.220 回答
0

最终不得不强制 div 可见

在谷歌地图支持论坛上查看这个帖子:

http://groups.google.com/group/Google-Maps-Troubleshooting/browse_thread/thread/0d27b66eef5f5d9e/1259a2991412f796?lnk=raot

谢谢!!

于 2008-12-29T22:12:20.187 回答
0

我使用的代码是

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml">
  <head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
    <META NAME="AUTHOR" CONTENT="Rakshith Krishnappa">
    <META NAME="DESCRIPTION" CONTENT="KML Tool - Get Latitude and Longitude for KML Polyline">
    <META NAME="KEYWORDS" CONTENT="Google, maps, mashup, tools, kml, polyline">
    <META NAME="ROBOTS" CONTENT="ALL"> 
    <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
    <title>Mapmash | Geocoder Tool | Geocode - Reverse Geocode - IP Geocode</title>
    <%--<style type="text/css">
    <!--
      html {
        height: 100%; width:100%;overflow:hidden;
      } 
      body {
      background-color: white;
      font-family: Arial, sans-serif;
      font-size:10pt
     }
     h1 {
     font-size: 18pt;
     }   
      #map {
      height: 100%;
           } 
    #hand_b {
      width:31px;
      height:31px;
      background-image: url(http://google.com/mapfiles/ms/t/Bsu.png);
    }
    #hand_b.selected {
      background-image: url(http://google.com/mapfiles/ms/t/Bsd.png);
    }

    #placemark_b {
      width:31px;
      height:31px;
      background-image: url(http://google.com/mapfiles/ms/t/Bmu.png);
    }
    #placemark_b.selected {
      background-image: url(http://google.com/mapfiles/ms/t/Bmd.png);
    }

    #line_b {
      width:31px;
      height:31px;
      background-image: url(http://google.com/mapfiles/ms/t/Blu.png);
    }
    #line_b.selected {
      background-image: url(http://google.com/mapfiles/ms/t/Bld.png);
    }

    #shape_b {
      width:31px;
      height:31px;
      background-image: url(http://google.com/mapfiles/ms/t/Bpu.png);
    }
    #shape_b.selected {
      background-image: url(http://google.com/mapfiles/ms/t/Bpd.png);
    }          
    --> 
    </style>
    <style type="text/css">
    v\:* {
      behavior:url(#default#VML);
    }
    </style>--%>
    <script type="text/javascript" src="http://www.google.com/jsapi?key=ABQIAAAAPkZq56tNYNmeuZjNQQ2p3hT0NZP-HbfQNNfWb9Z5SLbjZKYKwBTrGBqtttFmF2d-kWv2B2nqW_NyEQ"></script>
    <script type="text/javascript">
        google.load("maps", "2");
    </script>
    <script src="dragzoom.js" type="text/javascript"></script>
    <script src="http://adserver.lat49.com/lat49/v0.10/lat49.js" type="text/javascript"></script>
    <!-- Start of Google Analytics Code -->
    <script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
    </script>
    <script type="text/javascript">
    _uacct = "UA-2417064-1";
    urchinTracker();
    </script>
    <!-- End of Google Analytics Code -->   
    <script type="text/javascript">
    //<![CDATA[
    //rakf1 modified code taken from these 2 sources: - http://www.gorissen.info/Pierre/maps/googleMapLocationv4.php and - Distance Measurement Tool - Google Mapplets
    // argItems code taken from 
    // http://www.evolt.org/article/Javascript_to_Parse_URLs_in_the_Browser/17/14435/?format=print

    var map;
    var coordinates = '';
    var geocoder = new GClientGeocoder();
    var added = 0;
    var marker;

    function write_point() {
        var position = marker.getPoint();
        var lat = position.y.toFixed(6);
        var lng = position.x.toFixed(6);

        coordinates = lng + "," + lat + "\n";
        document.getElementById("attribute").value = 'lat="'+lat+'" lng="'+lng+'"';
        document.getElementById("latlng").value = '<lat>'+lat+'</lat>\n<lng>'+lng+'</lng>';
        document.getElementById("kml").value = lng+','+lat;
        document.getElementById("coord").value = marker.getPoint().toUrlValue();            
    }

    function get_address1() {
        GEvent.addListener(marker, "click", function(){
            var position = marker.getPoint();
            var lat = position.y.toFixed(6);
            var lng = position.x.toFixed(6);
            var html = 'FreeReverseGeo.com (~address):<br><iframe id="RSIFrame" name="RSIFrame" style="overflow:hidden; width:200px; height:55px; border: 1px" src="http://www.freereversegeo.com/gmap-api.php?lat_1=' + lat + '&lng_1=' + lng + '"></iframe><br>('+lat+','+lng+')';
            marker.openInfoWindowHtml(html);                    
        });     
    }

    function get_address() {
        GEvent.addListener(marker, "click", function(){
            var position = marker.getPoint();
            geocoder.getLocations(position, function(addresses) {
              if(addresses.Status.code != 200) {
                marker.openInfoWindowHtml("<b>Google Reverse Geocode:</b><br>Reverse geocoder failed to find an address for " + position.toUrlValue());
              }
              else {
                address = addresses.Placemark[0];
                var html = address.address;
                marker.openInfoWindowHtml("<b>Google Reverse Geocode:</b><br>"+html);
              }
            });                 
        });     
    }


    function my_location() {
        if (google.loader.ClientLocation) {
            var cl = google.loader.ClientLocation;
            var html = 'Google ClientLocation: <br><font size="+1">' + cl.address.city + ', ' + cl.address.region+ '<br> ' + cl.address.country+'</font><br>('+cl.latitude+','+cl.longitude+')'; 
            var point = new GLatLng(cl.latitude, cl.longitude);
            if(!marker) {
            map.setZoom(12);
            marker = new GMarker(point,{title: "Click to get address", draggable: true});
            map.addOverlay(marker); 
            added = 1;
            }
            map.setCenter(point);
            marker.setPoint(point);
            marker.openInfoWindowHtml(html);
        }
    }

    function draw_point() { 
        GEvent.addListener(map, 'click', function(overlay, point) {
            if (point && !added) {
                marker = new GMarker(point, {icon:G_DEFAULT_ICON, draggable: true, title: "Click to get address"});             
                map.addOverlay(marker);
                added = 1;
                GEvent.addListener(marker, "dragend", function(){
                    write_point();
                }); 
            }
            else if (point && added) {
                marker.setPoint(point); 
            }
            write_point();
            get_address();
        });

    }



    function showAddress(address) {
      geocoder.getLatLng(
        address,
        function(point) {
          if (!point) {
            alert(address + " not found");
          } else {
            map.setCenter(point, 11);
            if(!marker) {
                marker = new GMarker(point, {icon:G_DEFAULT_ICON, draggable: true, title: "Click to get address"});             
                map.addOverlay(marker); 
                get_address();
                added = 1;
            }
            marker.setPoint(point); 
            write_point();
            }
        }
      );
    }

    function showLat49Ads(){
        Lat49.initAds(19);
        var center = map.getCenter();
        var lat = center.lat();
        var lng = center.lng();
        var zoomlevel = Lat49.Tile.convertGMap2Zoom(map.getZoom());
        Lat49.updateAdByLatLon("lat49ads", lat, lng, zoomlevel);
    }

    function load(){

        map = new GMap2(document.getElementById("map"),{draggableCursor: 'crosshair', draggingCursor: 'crosshair'});
        map.addControl(new GSmallZoomControl());
        map.addControl(new GMenuMapTypeControl(),new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(61,7)));
        map.addMapType(G_PHYSICAL_MAP);
        map.addControl(new GOverviewMapControl());
        var boxStyleOpts = { opacity: .2, border: "2px solid yellow" };         
        var otherOpts = {
          buttonHTML: "<img src='zoom-control-inactive1.png' title='Drag Zoom' />",
          buttonZoomingHTML: "<img src='zoom-control-active1.png' title='Drag Zoom: Cancel' />",
          buttonStartingStyle: {width: '15px', height: '15px'},
          overlayRemoveTime: 0 };
        map.addControl(new DragZoomControl(boxStyleOpts, otherOpts, {}), new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(25,7)));
        map.setCenter(new GLatLng(37.35, -121.93), 12);

        draw_point();
        showLat49Ads();
        GEvent.addListener(map, "moveend", showLat49Ads);
     }
    //]]>
    </script>       
  </head>
  <body onload="load()" onunload="GUnload()">
    <table width="100%" height="100%" style="width:100%; height:100%">
        <tr style="vertical-align:top">
            <td style="width:320px">
                <table><tr>             
                </tr></table>
            </td>
            <td>
            </td>
            <td align="right">
                <nobr>
                  <form action="#" onsubmit="showAddress(this.address.value); return false">
                    <input type="text" size="30" name="address" value="Chicago, IL" />
                    <input type="submit" value="Go!" />
                  </form>
                </nobr>    
            </td>
        </tr>  
        <tr>
            <td valign="top">
                <div style="width:300px;font-size:8pt"><h1>GeoCoder</h1>Click on the map or search a place to add a marker and drag marker around to get marker position coordinates. Click on marker to get approximate address.</div>
                <br><span style="font-size:8pt"><b>Coordinates (lat, lng):</b> [for GLatLng]</span><br>
                <input type="text" size="30" id="coord" onclick="this.select()"/>
                <br><br><span style="font-size:8pt"><b>Coordinates (lng, lat):</b> [for KML]</span><br>
                <input type="text" size="30" id="kml" onclick="this.select()"/>
                <br><br><span style="font-size:8pt"><b>Coordinates (lat="x.xx" lng="x.xx"):</b></span><br>
                <input type="text" size="30" id="attribute" onclick="this.select()"/>
                <br><br><span style="font-size:8pt"><b>Coordinates (&lt;lat&gt; &lt;lng&gt;):</b></span><br>
                <textarea rows="2" cols="24" id="latlng" onclick="this.select()" ></textarea>               
                <br>
                <br>    
                    <script type="text/javascript"><!--
                    google_ad_client = "pub-2773616400896769";
                    /* maptools_300x250_01 */
                    google_ad_slot = "1034665593";
                    google_ad_width = 300;
                    google_ad_height = 250;
                    //-->
                    </script>
                    <script type="text/javascript"
                    src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
                    </script>   
            </td>       
            <td colspan="2" width="100%" height="100%">
                <div style="position:relative;width:100%;height:100%">
                    <div id="lat49ads" lat49adposition="top-right" 
                        style="position:absolute;top:7px; right:4px; width:125px; height:133;z-index:99999;"></div>             
                    <div id="map" style="width:100%;height:400px;min-height:400px;border:1px solid #999;"></div>
                </div> 
            </td>
        </tr>
    </table>
  </body>
</html>

如果有人对我之前发布的代码有任何想法,请发表评论。

谢谢

于 2010-03-08T13:39:29.860 回答