惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
Tenable Blog
Last Week in AI
Last Week in AI
P
Proofpoint News Feed
Engineering at Meta
Engineering at Meta
H
Help Net Security
F
Fortinet All Blogs
MyScale Blog
MyScale Blog
宝玉的分享
宝玉的分享
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园 - 司徒正美
量子位
N
Netflix TechBlog - Medium
Apple Machine Learning Research
Apple Machine Learning Research
小众软件
小众软件
Recorded Future
Recorded Future
博客园 - 三生石上(FineUI控件)
Vercel News
Vercel News
aimingoo的专栏
aimingoo的专栏
I
InfoQ
Microsoft Security Blog
Microsoft Security Blog
Scott Helme
Scott Helme
The Last Watchdog
The Last Watchdog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
IT之家
IT之家
AI
AI
WordPress大学
WordPress大学
Security Archives - TechRepublic
Security Archives - TechRepublic
Google Online Security Blog
Google Online Security Blog
U
Unit 42
V2EX - 技术
V2EX - 技术
MongoDB | Blog
MongoDB | Blog
Schneier on Security
Schneier on Security
博客园 - Franky
H
Heimdal Security Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Jina AI
Jina AI
W
WeLiveSecurity
P
Privacy & Cybersecurity Law Blog
Cloudbric
Cloudbric
B
Blog RSS Feed
N
News | PayPal Newsroom
S
Securelist
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
I
Intezer
Hacker News - Newest:
Hacker News - Newest: "LLM"
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
博客园_首页
罗磊的独立博客
H
Hackread – Cybersecurity News, Data Breaches, AI and More
雷峰网
雷峰网

博客园 - protorock

WPF:通过Window.DataContext实现窗口间传值 How to add dependency on a Windows Service AFTER the service is installed 实现泛型IEnumerable接口 关于Local System/Local Service/Network Service账户 vs2010 c# 管理win7防火墙 WIN7系统中连接点(Junction Points) 程序集强名称(Strong Name)延迟签名与签名 VISUAL STUDIO 2010 单元测试 Windows Server 2008 R2上Ext.net 生产环境搭建 在Windows7 (SP1)配置IIS7.5 + .Net Framework 4.0.30319 web.config 加密步骤 - protorock - 博客园 GridView 与自定义对象的绑定和分页 在Windows 2003 中发布 ASP.NET 2.0 + SQL SERVER Express SQL Server 2005 Express Edition 用户实例 在 windows2003 Server VS2005 安装 .Net 3.0 .net framework 2.0,3.0与3.5之间的关系 SharpMap AjaxMapControl 中 Zoomin/Zoomout 操作时冻结问题 Sharpmap AjaxMapControl 分析 HTTP 协议概要(二) 持久连接
将Google Map 与ASP.NET AJAX 扩展集成
protorock · 2008-04-17 · via 博客园 - protorock

1. 问题的提出:
   从所周知,Google map 提供的API有其自身的Ajax实现,如果要将Google Map API 嵌入到Asp.net Ajax 扩展的网页如何实现Google Map API 与Asp.net Ajax 客户端扩展库协调是必须考虑的问题。

2. 本文的目的:
   将Google Map 嵌入到一个Asp.net Ajax Enabled 的网页中,利用Asp.net Ajax客户端扩展库 Sys.Net.WebRequest 对象,从服务器请求XML数据,并将XML数据显示在 Google Map 的 OverLay 上。

3. 实现方法:
   利用Asp.net Ajax客户端扩展库创建一个名为 GoogleMap.Map 对象。并将Google Map初始化已经撤销对象处理封装在这个对象中。

4 .客户端代码:

    <script type="text/javascript">
        
//<![CDATA[
       Type.registerNamespace("GoogleMap");
        GoogleMap.Map 
= function(element) 
        
{
            GoogleMap.Map.initializeBase(
this, [element]);
            
this._mapCanvas = element;
            
this._map = null;
            
this._infoTimeElement = null;
            
this._updateElement = null;
            
this._url = null;
        }

        GoogleMap.Map.prototype 
= {
            initialize : 
function() {
                GoogleMap.Map.callBaseMethod(
this'initialize');
                
                
this._map = new GMap2(this._mapCanvas);
                
this._map.addControl(new GLargeMapControl());
                
this._map.setCenter(new GLatLng(29.47921866121.86541563), 12);
                
this._map.setMapType(G_HYBRID_MAP);
                
                $addHandlers(
this._updateElement, {'click'this.update}this);
            }

            dispose : 
function() {
                $clearHandlers(
this._updateElement);
                GUnload();
                
this._map = null;
                GoogleMap.Map.callBaseMethod(
this'dispose');
            }

            update: 
function() {
                
var webRequest = new Sys.Net.WebRequest();
                webRequest.set_url(
this._url);
                webRequest.add_completed(Function.createCallback(
this.onSuccessedXML, this));
                webRequest.invoke();
            }
,
            onSuccessedXML : 
function(executor, eventArgs, context)
            
{
                context._map.clearOverlays();
                
if(executor.get_responseAvailable()) {
                    
var xml = executor.get_xml();
                    
var markers = xml.documentElement.getElementsByTagName('marker');
                    context._infoTimeElement.innerHTML 
= markers[0].getAttribute('t');
                    
for(var i=1; i<markers.length; i++{
                        
var point = new GLatLng(parseFloat(markers[i].getAttribute('lat')), parseFloat(markers[i].getAttribute('lng')));
                        
var text = new Sys.StringBuilder(markers[i].getAttribute('name'));
                        text.append(
'<br />');
                        text.append( markers[i].getAttribute(
'txt'));
                        text.append(
'<br />');
                        text.append( markers[i].getAttribute(
'txt1'));
                        text.append(
'<br />');
                        text.append( markers[i].getAttribute(
'txt2'));
                        context._map.addOverlay(context.createMarker(point, text.toString()));
                    }

                }

            }
,
            createMarker : 
function(point, text) {
                
var defaultIcon = new GIcon(G_DEFAULT_ICON);
                
var m = new GMarker(point, {icon:defaultIcon});
                GEvent.addListener(m, 
'click'function(){ m.openInfoWindowHtml(text); });
                
return m;
            }
,
            get_infoTimeElement : 
function() {
                
return this._infoTimeElement;
            }
,
            set_infoTimeElement : 
function(value) {
                
this._infoTimeElement = value;
            }
,
            get_updateElement : 
function() {
                
return this._updateElement;
            }
,
            set_updateElement : 
function(value) {
                
this._updateElement = value;
            }
,
            get_url : 
function() {
                
return this._url;
            }
,
            set_url : 
function(value) {
                
this._url = value;
            }

        }

        GoogleMap.Map.registerClass(
'GoogleMap.Map', Sys.UI.Control);
        Sys.Application.add_init(pageInit);
        
function pageInit()
        

            $create(GoogleMap.Map, 
                
'updateElement': $get('refreshInfo'), 'infoTimeElement' : $get('ctl00_Content_pageInfo_LabelInfoTime'),  'url' : 'GMapBus.ashx'},
                
{}
                
{}
                $get(
'pageContent'));
        }
 
        
//]]>          
    </script>