zoukankan      html  css  js  c++  java
  • Google Maps API 调用实例

    本实例介绍如何调用Google Maps API,并实现用鼠标标注地图,保存进数据库,以及二次加载显示等。

    1.需要新建一个自定义控件(如:Map.ascx),用于显示Google地图:

    <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="Map.ascx.cs" Inherits="StarSoft.UI.Customer.UserControl.Map" %>
    <div id="map" style=" 100%; height: 360px;">
    </div>
    <table style="display: none">
        <tr>
            <td width="60px">
                <span>
                    纬度</span>
            </td>
            <td>
                <asp:TextBox ID="txtY" runat="server" CssClass="txtbase" onfocus="this.className='txtfocus';"
                    onblur="this.className='txtbase';" onpropertychange="javascript:CheckInputFloat(this);"></asp:TextBox>
            </td>
            <td>
                <span>
                    经度</span>
            </td>
            <td>
                <asp:TextBox ID="txtX" runat="server" CssClass="txtbase" onfocus="this.className='txtfocus';"
                    onblur="this.className='txtbase';" onpropertychange="javascript:CheckInputFloat(this);"></asp:TextBox>
            </td>
        </tr>
        <tr>
            <td colspan="4">
                <script src=" http://ditu.google.com/maps?file=api&amp;v=2&amp;sensor=false&amp;key=<%=System.Configuration.ConfigurationSettings.AppSettings["googlemapkey"].Trim() %>"
                    type="text/javascript"></script>
                <script language="javascript" type="text/javascript">
                    function CheckInputFloat(oInput) {
                        if ('' != oInput.value.replace(/d{1,}.{0,1}d{0,}/, '')) {
                            oInput.value = oInput.value.match(/d{1,}.{0,1}d{0,}/) == null ? '' : oInput.value.match(/d{1,}.{0,1}d{0,}/);
                        }
                    }
    
                    //<![CDATA[
                    var x;
                    var geocoder;
                    var marker;
                    if (GBrowserIsCompatible()) {
                        var map = new GMap2(document.getElementById("map"));
                        var LatValue = document.getElementById("<%=txtX.ClientID%>").value;
                        var LngValue = document.getElementById("<%=txtY.ClientID%>").value;
                        if ((LatValue == "") || (LngValue == "")) {
                            map.setCenter(new GLatLng(30.25372, 120.13343), 13);
                        }
                        else {
                            map.setCenter(new GLatLng(LatValue, LngValue), 13);
                            var curpoint = new GLatLng(LatValue, LngValue);
                            marker = new GMarker(curpoint, this.ico);
                            map.addOverlay(marker);
                        }
                        geocoder = new GClientGeocoder();
                    }
                    function createMarker(point, title, html) {
                        var marker = new GMarker(point);
                        //GEvent.addListener(marker, "click", function(){marker.openInfoWindowHtml(html,{maxContent: html,maxTitle: title});});
                        return marker;
                    }
                    function showAddress(address) {
                        if (geocoder) {
                            geocoder.getLatLng(
                               '中国' + address,
                               function (point) {
                                   if (!point) {
                                       // alert(address + " 未找到");
                                   }
                                   else {
                                       if (marker)//移除上一個點 
                                       {
                                           map.removeOverlay(marker);
                                       }
                                       map.setCenter(point, 13);
                                       var title = "地址";
                                       marker = createMarker(point, title, address);
                                       map.addOverlay(marker);
                                       //marker.openInfoWindowHtml(address,{ maxContent: address, maxTitle: title}); 
                                   }
                               }
                             );
                        }
                    }
                    GEvent.addListener(map, 'click', function (overlay, point) {
                        if (point) {
                            map.clearOverlays();
                            var marker = new GMarker(point, { draggable: true });
                            map.addOverlay(marker);
    
                            GEvent.addListener(marker, "dragstart", function () {
                            });
                            GEvent.addListener(marker, "dragend", function () {
                                point = marker.getLatLng();
                                document.getElementById("<%=txtY.ClientID%>").value = point.x;
                                document.getElementById("<%=txtX.ClientID%>").value = point.y;
                            });
                            document.getElementById("<%=txtY.ClientID%>").value = point.x;
                            document.getElementById("<%=txtX.ClientID%>").value = point.y;
                        }
                    });
                    map.enableScrollWheelZoom();
                    map.addControl(new GSmallZoomControl());
                    map.addControl(new GMapTypeControl());
    
                    //]]>
                </script>
            </td>
        </tr>
    </table>
    Map.ascx
    using System;
    using System.Collections;
    using System.Configuration;
    using System.Data;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Xml.Linq;
    
    namespace StarSoft.UI.Customer.UserControl
    {
        public partial class Map : System.Web.UI.UserControl
        {
            /// <summary>
            /// 纬度
            /// </summary>
            public string Latitude
            {
                get { return this.txtX.Text; }
                set { this.txtX.Text = value; }
            }
            /// <summary>
            /// 经度
            /// </summary>
            public string Longitude
            {
                get { return this.txtY.Text; }
                set { this.txtY.Text = value; }
            }
    
    
            protected void Page_Load(object sender, EventArgs e)
            {
               
            }
        }
    }
    Map.ascx.cs

    2.页面中调用这个自定义控件:

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="AreaLocation.aspx.cs" Inherits="StarSoft.UI.Customer.AreaLocation" %>
    
    <%@ Register src="UserControl/Map.ascx" tagname="Map" tagprefix="uc1" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>无标题页</title>
       <webcontrol:Style ID="Style" runat="server" /> 
       <script language="javascript" type="text/javascript">
          function ChooseLoaction()
          {
             var txtX=document.getElementById('<%=Map1.FindControl("txtX").ClientID %>').value;
             var txtY= document.getElementById('<%=Map1.FindControl("txtY").ClientID %>').value;
             if(txtX=="")
             {
                 alert('请选择经纬度!');
             }
             else
             {
                window.returnVal =  txtX+"|"+ txtY;
                window.parent.hidePopWin(true);
             }
          }
       </script>
    </head>
    <body>
        <form id="form1" runat="server">
       <div class="popForm" >
                <div class="mainForm"> 
            <uc1:Map ID="Map1" runat="server" />
        </div></div>
        
        <div class="operArea">
                    <div class="btnArea" >        
            <input type="button"  id="BtnQuery" class="btnSubmit"   runat="server"  onclick="javascript:ChooseLoaction();"/>
            <input type="button"  id="close" class="btnReturn"  onclick="javascript:parent.hidePopWin(false);" runat="server"/>
                    </div>
                </div>
        </form>
    </body>
    </html>
    AreaLocation。aspx
    using System;
    using System.Collections;
    using System.Configuration;
    using System.Data;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Xml.Linq;
    
    namespace StarSoft.UI.Customer
    {
        public partial class AreaLocation : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!string.IsNullOrEmpty(StrLoactID) && StrLoactID != "null")
                {
                    Map1.Latitude = StrLoactID.Split(',')[0];
                    Map1.Longitude = StrLoactID.Split(',')[1];
                }
    
                if (!IsPostBack)
                {
                    BtnQuery.Value = StarSoft.Common.ResourceManager.Field("Query");
                    close.Value = StarSoft.Common.ResourceManager.Field("CancelBtn");
                    if (Ty != "")
                    {
                        close.Value = StarSoft.Common.ResourceManager.Field("CloseBtn");
                        BtnQuery.Style["display"] = "none";
                    }
                }
            }
    
            /// <summary>
            /// 经纬度信息
            /// </summary>
            public string StrLoactID
            {
                get
                {
                    try
                    {
                        return Request.Params["LoactID"].ToString();
                    }
                    catch
                    {
                        return "";
                    }
                }
            }
    
            /// <summary>
            /// 经纬度信息
            /// </summary>
            public string Ty
            {
                get
                {
                    try
                    {
                        return Request.Params["Ty"].ToString();
                    }
                    catch
                    {
                        return "";
                    }
                }
            }
        }
    }
    AreaLocation。aspx.cs

    3.web.config文件中配置Google Map访问秘钥:

    <add key="googlemapkey" value="ABQIAAAAFLEnBlXXNVEsCX6NrllENxRtJCFYwXExx0HqCDFUHyWjOHbgXhTNZ_AeqPjv3EmRwdeButm3wRXAuw"/>

    运行效果图:

  • 相关阅读:
    hdu 4027 Can you answer these queries? 线段树
    ZOJ1610 Count the Colors 线段树
    poj 2528 Mayor's posters 离散化 线段树
    hdu 1599 find the mincost route floyd求最小环
    POJ 2686 Traveling by Stagecoach 状压DP
    POJ 1990 MooFest 树状数组
    POJ 2955 Brackets 区间DP
    lightoj 1422 Halloween Costumes 区间DP
    模板 有源汇上下界最小流 loj117
    模板 有源汇上下界最大流 loj116
  • 原文地址:https://www.cnblogs.com/gawking/p/3541103.html
Copyright © 2011-2022 走看看