Google Maps by asp.net API集成-S.Sams

您只需要定位经纬度就可以轻易实现 Google Maps, 让您在轻松的C#环境中非常简便地实现基于 javascript 的地图, 您不用去查找 google 大量的地图文档便可轻松完成复杂的地图功能, 当然您同样可以在当前生成的基础上进行扩展, 实现更加个性化的地图!

对 Google Maps API 全面集成!

生成一张地图, 就是这么简单

	Init inits = new Init("showmymap");
List<Label> labels = new List<Label>()
{
new Label(){X = 23.134391,Y = 113.287550}
};
MapScript.Text =  new Maps(AppId, inits, labels).ToString();

下载Demo实例: http://code.google.com/p/donetgooglemapsapi/downloads/list 如果您需要更多的个性化功能, 接着往下看(系统设置项).

2008-08-28 新增

增加多标签 Tab 项支持
Javascript 脚本压缩输出
增加用户自定义标注支持
用户自定义标注点支持消息显示和回调函数自定义 CallBack
改进 google maps 处理流程
标注点 ZoomIn 支持 0 值, 不改当前地图的 ZoomIn 值
增加地图启用鼠标滚轮动作控制 

2008-08-29 新增

增加标注点缩略图预览 Label.IsShowMapView = true 即可!
增加支持将地图输出为图片 

2008-08-30 新增

增加标注点支持消息显示框放大和内容重置
增加支持地图搜索功能
支持地图Javascript引擎地址自定义(可切换到 http://ditu.google.com/)
重写标注点定义 

2008-09-08 更新

修正地图生成图片bug
动态加载 javascript onload / onunload 事件 

源代码SVN: http://donetgooglemapsapi.googlecode.com/svn/trunk/

看下如何实现

    /// <summary>
/// MapPageBase 处理了 // onload="initialize()" onunload="GUnload()" 这两个事件, 如果不使用继承, 请自行处理该事件!
/// </summary>
public partial class Example : MapPageBase
{
protected void Page_Load(object sender, EventArgs e)
{
// 在这里申请你的 AppKey
// http://code.google.com/apis/maps/signup.html
string AppId = "ABQIAAAAT2TW27KPpzTcS3Av9rRZ8xTMc_QNvQYPZO4F6J-ygmVXuqkocRS6gkKMvUKO2am7UGh-wFKm8McGSQ";
//默认初始化
//Init inits = new Init("showmymap",15);
Init inits = new Init("showmymap") { Maptype = MapType.G_PHYSICAL_MAP};
// 定义经纬度坐标点
List<Label> labels = new List<Label>()
{
new Label()
{
X = 23.134391,
Y = 113.287550,
// ------------- 以下是可选项, 可以不设置, 使用系统的默认值 ------------
IsCenter = true,  // 设置中心点, 存在多点只设置一点即可
Msg = "一起飞国际机票网",
MsgMaxContent = "信息框放大显示的内容,可以为空,不设置!",
MsgMaxTitle = "显示的标题, 可以为空,不设置!"
// ------------------------------------------------------------------
}
};
// 设置地图入参
Maps map = new Maps(AppId, inits, labels);
// 生成地图
MapScript.Text = map.ToString();
// 生成图片地图
ShowStaticMap.ImageUrl = map.ToImagePath(500, 500);
}
}

系统设置项

    -- S.Sams Lifexperience!
posted @ 2008-09-09 09:29 S.Sams 阅读(4226) 评论(46)  编辑 收藏 网摘 所属分类: Javascript 应用实例Web标准

  回复  引用  查看    
#1楼2008-09-09 09:43 | Justin      
赞一个!
  回复  引用  查看    
#2楼2008-09-09 09:46 | 有容乃大      
收藏了,谢。

-----------------------------------------------
发布.net项目开发工具(V3.0 ):
http://www.cnblogs.com/mrhgw/archive/2008/08/06/1261664.html" target="_new">http://www.cnblogs.com/mrhgw/archive/2008/08/06/1261664.html
http://www.mrhgw.cn" target="_new">http://www.mrhgw.cn

  回复  引用    
#3楼2008-09-09 09:48 | 晕倒[未注册用户]
http://www.51ditu.com/ 早就提供了对外接口了

  回复  引用  查看    
#4楼2008-09-09 09:48 | m2land      
不错,谢谢!
  回复  引用  查看    
#5楼2008-09-09 09:56 | 平静中的疯狂      
不错不错,这个一定得赞一个。
不知道LZ是否再能增加一个 根据城市名称搜索经纬度功能。这样的话,那就太好喽:-)
虽然google map没有公开根据地图搜索经纬度(定位),但是可以通过一些方法获取到~~~。
希望LZ实现哦。
再赞一个

  回复  引用    
#6楼2008-09-09 09:58 | andywu[未注册用户]
赞一个,强烈支持。
  回复  引用    
#7楼2008-09-09 10:01 | shangfc[未注册用户]
mark
  回复  引用  查看    
#8楼[楼主]2008-09-09 10:01 | S.Sams      
开发的初衷只是为了团队使用的便捷, 共享劳动成果, 不用每个人都花时间去了解这一部分.

  回复  引用  查看    
#9楼[楼主]2008-09-09 10:04 | S.Sams      
@晕倒
其实很多地图提供商都提供了对外的接口, 不过都是基于javascript的(可能是我找不到基于asp.netC#的接口吧), 而且得阅读大量的文档, 其实挺痛苦的.

  回复  引用  查看    
#10楼[楼主]2008-09-09 10:06 | S.Sams      
@平静中的疯狂
关于坐标定位的问题, 其实是可以做到的, 你可以监控一下 google 的地图搜索的数据流, 就可以得到生成的地址, 可以以 JSON / XML 的方式输出.
而 API的集成 是通用的. 如果你的企业是用 google 的企业版本的地图, 数据可以直接拷贝到您的本地服务器.

  回复  引用  查看    
#11楼2008-09-09 10:11 | 平静中的疯狂      
@S.Sams
做了一件好事啊http://www.cnblogs.com/Emoticons/tusiji/203330716.gif" alt="" />http://www.cnblogs.com/Emoticons/tusiji/203330832.gif" alt="" />

  回复  引用  查看    
#12楼[楼主]2008-09-09 10:15 | S.Sams      
@平静中的疯狂
好大顶帽!, 哈!
只是做了一些力所能及事罢了!

  回复  引用  查看    
#13楼2008-09-09 11:20 | 李振华      
不错
  回复  引用  查看    
#14楼2008-09-09 11:29 | 簡簡單單..      
正好用到, 谢谢..
  回复  引用  查看    
#15楼2008-09-09 11:33 | 岁寒づ古枫      
--引用--------------------------------------------------
S.Sams: @平静中的疯狂
好大顶帽!, 哈!
只是做了一些力所能及事罢了!
--------------------------------------------------------
确实不错!

  回复  引用    
#16楼2008-09-09 12:17 | a王者之剑[未注册用户]
很不错的东东
  回复  引用  查看    
#17楼2008-09-09 13:24 | peace      
无条件支持下
  回复  引用  查看    
#18楼2008-09-09 13:35 | 一挥      
太好,实用技术!
  回复  引用  查看    
#19楼[楼主]2008-09-09 13:41 | S.Sams      

看来还是比较实用的, 有这么多人支持.再教一个大家比较实用的技巧.
是关于经纬数据方面的, 想获取精确的经纬度数据请按下面的请求方式即可得到.

Method: GET

RequestUrl:

http://picasaweb.google.com/lh/geocode?tok=LQSUh1KHmVTVJIlMLt_XsYh6eCk&location=%E4%B8%80%E8%B5%B7%E9%A3%9E%E5%9B%BD%E9%99%85%E6%9C%BA%E7%A5%A8%E7%BD%91&alt=json">http://picasaweb.google.com/lh/geocode?tok=LQSUh1KHmVTVJIlMLt_XsYh6eCk&location=%E4%B8%80%E8%B5%B7%E9%A3%9E%E5%9B%BD%E9%99%85%E6%9C%BA%E7%A5%A8%E7%BD%91&alt=json

Http: Header:

Accept: image/gif, image/x-xbitmap, image/jpeg, application/x-ms-application, application/vnd.ms-xpsdocument, application/xaml+xml, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-silverlight, application/x-silverlight-2-b2, application/x-shockwave-flash, image/pjpeg, */*
Accept-Language: zh-cn
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; TencentTraveler ; SLCC1; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.5.21022; OfficeLiveConnector.1.0; CIBA; .NET CLR 3.5.30729; .NET CLR 3.0.30618)
Host: picasaweb.google.com
Connection: Keep-Alive
Cookie: testcookie=; lh=DQAAAKIAAADtVe3W7NrHFgR0O_f_BR7Y60_UgXAmvyfsW1AYGEZlLr1jcVLviwB5nOSv2GbriqcCP9tTEc0_5PApnWgzk72B4PeUTEg889ilPorEqBct_QyfB_SZ5YFBrEx5UMfhG3ryiv9CN6uIKyKE5XxQ31vtJTz1mNW4TF62u6e8u2f57gezfHvxYYbL_6UN14DcN_tUhoviBJnfa9xR83-7FhvbeAVtvTKm2tx3BTTv6XyUAA; PREF=ID=535885dfae0f29e4:LR=lang_zh-CN|lang_zh-TW|lang_en:LD=en:NR=10:NW=1:CR=2:TM=1215836647:LM=1219901909:DV=AA:GM=1:S=7FuzlmtP5x1pwots; NID=14=ao65F7VymJbP7CcXI4e8_s2FH5kNvYTK-_ao8HLouTer-arg-6idiEGEImb5uTNPFvuT5oFRssjZBBXOuOjNiXv0OTuOYXQ6vNJ7jO3cLSh7zyIOtdf7UDBlF-K1EuiY; SID=DQAAAKEAAAAd_u32BTcj_9yK9K8Jdat6cSQp29PfJkQMrs3ki_v8UQGpht0T4R4HRKUNOIB-0z-Ta_Kb4JckyKYKruFMEoyqCTdrCxja9yz5QalD36df3WHR8Py2NkvWGcWa3YBdTmz40tpofjqf17g2E1iEncxcSglVDJQQprTAQhubrBvfgTOQ6NKXnp7GuTb2xxflIdUgxgqf7W6yJXdZl3wpC-STRBoK2G90t1MQkeFrpk-3Bw; testcookie=


Return Result:
[{"address":"中国广东省广州市越秀区环市东路368号花园酒店","quality":100,"bb":{"ll":{"lat":23.135087050000003,"lon":113.28625885},"ur":{"lat":23.135096949999998,"lon":113.28635315},"latSpan":4.9499999992264065E-6,"lonSpan":4.715000000032887E-5},"lat":23.135092,"lon":113.286306,"spellCorrection":false}]




  回复  引用  查看    
#20楼2008-09-09 14:10 | willieQ      
好东西,正需要呢~~~
  回复  引用  查看    
#21楼2008-09-09 17:17 | 梁逸晨      
楼主,我建议你加一个功能:卫星地图取map.google.com的数据,而不要直接用ditu.google.com的(因为坐标全是假的)
  回复  引用  查看    
#22楼[楼主]2008-09-09 18:13 | S.Sams      
@梁逸晨
至于用 map.google.com 还是用 ditu.google.com, 你可以自由选择, 有没有看到 "地图js引擎" 这项, 这个属性就是设置你的上面所说的这个问题.

  回复  引用  查看    
#23楼[楼主]2008-09-09 18:16 | S.Sams      
ditu.google.com 的坐标不是假的, 而是国家有这方面的规定, 不允许以在地图显示准确的经纬度定位, 所以你会看到实际坐标会有一点偏移, 也正因为如此, mapabc.com 等一些开发商, 他们都将经纬度加以编码.
  回复  引用  查看    
#24楼2008-09-09 20:44 | 梁逸晨      
因为国际版的国内公路图不详细,而国内版的虽然国内公路图详细,但是卫星图却又偏差,所以我就是建议公路图用国内版的,卫星图用国际版的,而不是整个来切换API数据。

算法:

假如现在在国内公路图,想切换到卫星图,那么首先记录下当前坐标,然后进行偏差转换,把转换后的(X,Y)数据来请求国际版的卫星图,如果再要从国际版卫星图切换到公路图,则反过来切换一次即可。

从国内公路图转换到国际卫星图的偏差值:

var rebuild_x = function(x){return (parseFloat(x) + 0.002478002937054);}
var rebuild_y = function(y){return (parseFloat(y) - 0.00222623348237);}

参数x和y是当前的坐标值。

  回复  引用  查看    
#25楼[楼主]2008-09-10 10:09 | S.Sams      
@梁逸晨
不错, 如果需要得到准确的坐标值, 必须得做一下转换.

  回复  引用  查看    
#26楼2008-09-10 10:10 | 工业酒精      
关于Google地址解码方面的,其实已经放出了。

具体可以看看这个:http://it.dianping.com/google_map_update_geocoding_api.htm" target="_new">http://it.dianping.com/google_map_update_geocoding_api.htm

  回复  引用  查看    
#27楼2008-09-10 10:24 | 工业酒精      
--引用--------------------------------------------------
梁逸晨: 楼主,我建议你加一个功能:卫星地图取map.google.com的数据,而不要直接用ditu.google.com的(因为坐标全是假的)
--------------------------------------------------------

你所谓的数据,我想指得就是geocoding的经纬度吧?

现在map.google.com对于中国的地址,获得的经纬度也是偏移过的。

按照测绘局的说法,全国各地的偏移算法是非线性的,也就是说也许在上海是A算法,而在广州可能就是B算法。。。。

不过具体也没去仔细看过,不高兴折腾了。。。。

记录一下,谢谢。
  回复  引用  查看    
#30楼2008-09-10 11:55 | 偶卖糕的      
楼主你真行
  回复  引用  查看    
#31楼2008-09-10 15:22 | 雅阁布      
学习!!
  回复  引用    
#32楼2008-09-10 15:29 | herty[未注册用户]
我想问下地图标注的想让他旁边加上一个名字怎么加?不要在提示框里面的!
  回复  引用  查看    
#33楼[楼主]2008-09-10 15:32 | S.Sams      
@herty
改变图标最直接. Label.Image = "您的自定义图标url";

  回复  引用    
#34楼2008-09-10 15:35 | herty[未注册用户]
@S.Sams
不是图标这个我知道,我就是有好多商户要标记但是每个标记的商会都要给他一个名字!

  回复  引用  查看    
#35楼[楼主]2008-09-10 15:37 | S.Sams      
@herty
这样的话,你需要添加一个 dom 对象在map里面, 在javscript中操作.
图标的显示用css设置, 再 innerText 文本即可.

  回复  引用    
#36楼2008-09-10 15:39 | herty[未注册用户]
@S.Sams
OK,我在看看!thanks!

  回复  引用    
#37楼2008-09-10 15:55 | herty[未注册用户]
@S.Sams
你可以集成下吗?我这样做了不太方便!

  回复  引用  查看    
#38楼[楼主]2008-09-10 16:05 | S.Sams      
@herty
这些特定的需求是需要你在当前的系统的基础上做扩展的, 因为使用的机率不高, 所以就不做这块的集成了.

  回复  引用  查看    
#39楼2008-10-13 14:10 | 菜无罪1      
里面有个Travelive.TemplateEngine的dll.怎么不提供这个dll的源码
  回复  引用  查看    
#40楼[楼主]2008-10-13 16:49 | S.Sams      
@菜无罪1
如果你仔细分析,你会发觉 Travelive.TemplateEngine 就是 Nvelocity 的封装. Nvelocity 本来就是开源的.

  回复  引用    
#41楼2008-10-15 13:37 | CNS[未注册用户]
LZ提个问题,地图上的图钉,就是你上面图例里的 A B C三个点,这个图钉的图标,能不能自己定义的?
  回复  引用  查看    
#42楼[楼主]2008-10-15 14:25 | S.Sams      
@CNS 可以的, 在 Label 里面有个属性 Image 可以设置当前的图钉图标的. 您可以查看接口文档
  回复  引用    
#43楼2008-10-15 15:51 | CNS[未注册用户]
厄,我看到了,在请问一个问题,用户自定义标注点是否可以实现不同的放大系数放置不同的数据。


也就是比如当放大系数为5的时候,地图上自定义的标注和放大系数为10的时候不一样。

否则自定义标注太过多的时候,当地图缩小,就太丑了,密密麻麻都是图钉 - -

  回复  引用  查看    
#44楼[楼主]2008-10-15 17:06 | S.Sams      
@CNS
这个需要你自行扩展.

  回复  引用    
#45楼2008-10-16 22:43 | @TW[未注册用户]
真的很好用,只有一個小問題,就是有時地圖會出不來,我是用vs2005來實做的,請樓主參考
http://www.padaa.com/mrtfun/List.aspx?station=324&type=1&page=2
但第一頁會出來
http://www.padaa.com/mrtfun/List.aspx?station=324&type=1&page=1
請問知道是什麼原因嗎?再次感謝樓主的無私。謝謝

  回复  引用  查看    
#46楼[楼主]2008-10-17 10:57 | S.Sams      
@@TW
刚打开你的页面没问题, 两个页面显示正常啊.

发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 1287303




相关文章:

相关链接: