对 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 如果您需要更多的个性化功能, 接着往下看(系统设置项).
增加多标签 Tab 项支持
Javascript 脚本压缩输出
增加用户自定义标注支持
用户自定义标注点支持消息显示和回调函数自定义 CallBack
改进 google maps 处理流程
标注点 ZoomIn 支持 0 值, 不改当前地图的 ZoomIn 值
增加地图启用鼠标滚轮动作控制
增加标注点缩略图预览 Label.IsShowMapView = true 即可!
增加支持将地图输出为图片
增加标注点支持消息显示框放大和内容重置
增加支持地图搜索功能
支持地图Javascript引擎地址自定义(可切换到 http://ditu.google.com/)
重写标注点定义
修正地图生成图片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标准
发表评论
不错不错,这个一定得赞一个。
不知道LZ是否再能增加一个 根据城市名称搜索经纬度功能。这样的话,那就太好喽:-)
虽然google map没有公开根据地图搜索经纬度(定位),但是可以通过一些方法获取到~~~。
希望LZ实现哦。
再赞一个
#8楼[
楼主]2008-09-09 10:01 |
开发的初衷只是为了团队使用的便捷, 共享劳动成果, 不用每个人都花时间去了解这一部分.
#9楼[
楼主]2008-09-09 10:04 |
@晕倒
其实很多地图提供商都提供了对外的接口, 不过都是基于javascript的(可能是我找不到基于asp.netC#的接口吧), 而且得阅读大量的文档, 其实挺痛苦的.
#10楼[
楼主]2008-09-09 10:06 |
@平静中的疯狂
关于坐标定位的问题, 其实是可以做到的, 你可以监控一下 google 的地图搜索的数据流, 就可以得到生成的地址, 可以以 JSON / XML 的方式输出.
而 API的集成 是通用的. 如果你的企业是用 google 的企业版本的地图, 数据可以直接拷贝到您的本地服务器.
@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: @平静中的疯狂
好大顶帽!, 哈!
只是做了一些力所能及事罢了!
--------------------------------------------------------
确实不错!
#19楼[
楼主]2008-09-09 13:41 |
看来还是比较实用的, 有这么多人支持.再教一个大家比较实用的技巧.
是关于经纬数据方面的, 想获取精确的经纬度数据请按下面的请求方式即可得到.
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}]
楼主,我建议你加一个功能:卫星地图取map.google.com的数据,而不要直接用ditu.google.com的(因为坐标全是假的)
#22楼[
楼主]2008-09-09 18:13 |
@梁逸晨
至于用 map.google.com 还是用 ditu.google.com, 你可以自由选择, 有没有看到 "地图js引擎" 这项, 这个属性就是设置你的上面所说的这个问题.
#23楼[
楼主]2008-09-09 18:16 |
ditu.google.com 的坐标不是假的, 而是国家有这方面的规定, 不允许以在地图显示准确的经纬度定位, 所以你会看到实际坐标会有一点偏移, 也正因为如此, mapabc.com 等一些开发商, 他们都将经纬度加以编码.
因为国际版的国内公路图不详细,而国内版的虽然国内公路图详细,但是卫星图却又偏差,所以我就是建议公路图用国内版的,卫星图用国际版的,而不是整个来切换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 |
@梁逸晨
不错, 如果需要得到准确的坐标值, 必须得做一下转换.
--引用--------------------------------------------------
梁逸晨: 楼主,我建议你加一个功能:卫星地图取map.google.com的数据,而不要直接用ditu.google.com的(因为坐标全是假的)
--------------------------------------------------------
你所谓的数据,我想指得就是geocoding的经纬度吧?
现在map.google.com对于中国的地址,获得的经纬度也是偏移过的。
按照测绘局的说法,全国各地的偏移算法是非线性的,也就是说也许在上海是A算法,而在广州可能就是B算法。。。。
不过具体也没去仔细看过,不高兴折腾了。。。。
#29楼[
楼主]2008-09-10 10:37 |
我想问下地图标注的想让他旁边加上一个名字怎么加?不要在提示框里面的!
#33楼[
楼主]2008-09-10 15:32 |
@herty
改变图标最直接. Label.Image = "您的自定义图标url";
@S.Sams
不是图标这个我知道,我就是有好多商户要标记但是每个标记的商会都要给他一个名字!
#35楼[
楼主]2008-09-10 15:37 |
@herty
这样的话,你需要添加一个 dom 对象在map里面, 在javscript中操作.
图标的显示用css设置, 再 innerText 文本即可.
@S.Sams
你可以集成下吗?我这样做了不太方便!
#38楼[
楼主]2008-09-10 16:05 |
@herty
这些特定的需求是需要你在当前的系统的基础上做扩展的, 因为使用的机率不高, 所以就不做这块的集成了.
里面有个Travelive.TemplateEngine的dll.怎么不提供这个dll的源码
#40楼[
楼主]2008-10-13 16:49 |
@菜无罪1
如果你仔细分析,你会发觉 Travelive.TemplateEngine 就是 Nvelocity 的封装. Nvelocity 本来就是开源的.
LZ提个问题,地图上的图钉,就是你上面图例里的 A B C三个点,这个图钉的图标,能不能自己定义的?
#42楼[
楼主]2008-10-15 14:25 |
@CNS
可以的, 在 Label 里面有个属性 Image 可以设置当前的图钉图标的.
您可以查看接口文档
厄,我看到了,在请问一个问题,用户自定义标注点是否可以实现不同的放大系数放置不同的数据。
也就是比如当放大系数为5的时候,地图上自定义的标注和放大系数为10的时候不一样。
否则自定义标注太过多的时候,当地图缩小,就太丑了,密密麻麻都是图钉 - -
#44楼[
楼主]2008-10-15 17:06 |
@CNS
这个需要你自行扩展.
#46楼[
楼主]
2008-10-17 10:57 |
@@TW
刚打开你的页面没问题, 两个页面显示正常啊.