本帖最后由 kisson 于 2012-4-17 09:36 编辑
懒得手改的同学,请移步至插件版:
[url=[dx2.0 dx2.5]编辑器中添加静态地图插件版v1.0(20120414更新) https://discuz.dismall.com/thread-2753024-1-1.html]https://discuz.dismall.com/thread-2753024-1-1.html[/url]
谢谢大家的支持!
使用过程中的几个问题,请大家移步到本帖相应楼层:
1.关于多点标注添加的问题,请参考本帖16楼建议。
2.关于地图权限的问题,请参考本帖43楼及44楼建议。
3.关于修改默认载入城市地图的问题,请参考本帖64楼建议。
4.关于制作成编辑器discuz代码的问题,请参考本帖65楼及66楼建议。
5.有时间修改文件的同学,还是建议自己对相关文件按以下步骤进行修改。
附件下载(下载之前,请仔细阅读下文):
附件重新上传后的连接如下:
utf-8版本请查看本帖95#楼,感谢网友@曾子图提供:
https://discuz.dismall.com/forum.php? ... DB8MjUwMDE2NA%3D%3D
更新日志:2012年2月5日:
1)基于Dx2.0的20111121版本重新更新了下附件,懒人安装20111121版的DX2可以直接下载附件并上传覆盖即可。
2)更新了googlemap.html里边索引js文件的路径(之前的版本由于疏忽,填写了本人网站的路径)。
2011年11月19日:
更新googlemap.js文件,在function searchMap(zoom)中加入定位marker坐标的语句,修正了直接点搜索框且直接插入时,可能不显示marker的bug。function searchMap(zoom)函数更新为:- function searchMap(zoom){
- var address = $('#address').val();
- var geocoder = new google.maps.Geocoder();
- geocoder.geocode( { 'address': address}, function(results, status) {
- if (status == google.maps.GeocoderStatus.OK) {
- var tlatlng=results[0].geometry.location;
- if(zoom)map.setZoom(zoom);
- map.setCenter(tlatlng);
- marker.setPosition(tlatlng);
- marker.setTitle(address);
- marker_lat = marker.getPosition().lat();//20111119更新
- marker_lng = marker.getPosition().lng();//20111119更新
- gelMapURL();
- }
- else alert(address + " 地址错误,未找到当前地址");
- });
- }
复制代码 2011年11月17日:
感谢28楼的flexpad朋友提出的优化建议:
主要优化在修改editor.js的第二个case 'googlemap'语句后
将原来这句:
var mapsrc = window.frames[ctrlid + '_param_1'].document.getElementById("mapurl").value;
替换成:
var mapsrc = document.getElementById(ctrlid + '_param_1').contentWindow.document.getElementById("mapurl").value;
在2012年2月5日13时之前下载本文附件的同学,请按以上建议修改相关文件;在此时间之后的,请各位直接下载附件参考,谢谢!
在帖子里直接添加地图,可能很多站长需要。从“关于我们”插件得到启发,通过修改相关文件在编辑器中实现了这个功能(本人不太懂js,本文所陈述的修改的部分代码,可能有所冗余,希望高手指点),希望能给需要此功能的站长启发和帮助。先看截图:
下图为在编辑器中嵌入的按钮以及弹出的操作框。
选定地图后,点提交,自动插入到输入框中。
下面是文件的一些说明,大家也可以直接下载附件,上传覆盖即可!本文中相关文件的使用,如有疑问,可与我联系,yongbing@ichangning.com,如果大家觉得实用,就顶一个,谢啦!
1、修改的相关文件
\static\js\editor.js
\template\default\common\editor.css
\template\default\forum\post_editor_body.htm
2、添加的相关文件
\googlemap文件夹
\static\image\common\map.gif
3、修改步骤
1)打开editor.js
搜索“function discuzcode(cmd, arg) ”函数;
在以下代码- if(in_array(cmd, ['sml', 'url', 'quote', 'code', 'free', 'hide', 'aud', 'vid', 'fls', 'attach', 'image', 'pasteword',
复制代码 后添加'googlemap',变为- if(in_array(cmd, ['sml', 'url', 'quote', 'code', 'free', 'hide', 'aud', 'vid', 'fls', 'attach', 'image', 'pasteword', 'googlemap']) || cmd == 'tbl' || in_array(cmd, ['fontname', 'fontsize', 'forecolor', 'backcolor']) && !arg) {
复制代码 在“function showEditorMenu(tag, params)”函数的第一个“case 'pasteword':......break”后增加以下代码- case 'googlemap'://此case画出googlemap对话框by yongbing@ichangning.com
- stitle = '插入google地图';
- str = '通过搜索插入google地图(暂只支持单点标注)!';
- menuwidth = 600;
- menupos = '00';
- menutype = 'win';
- //var mapurl=this.frames[ctrlid+'_param_1'].document.getElementById("addMap").click(pasteMap);
- break;
复制代码 在第二个“case 'pasteword':......break”后增加以下代码- case 'googlemap':////此case执行googlemap对话框与输入框的传值by yongbing@ichangning.com
- var mapsrc = document.getElementById(ctrlid + _param_1').contentWindow.document.getElementById("mapurl").value;//20111117修改
- var str = '';
- if(wysiwyg) {
- insertText(str, str.length, 0, false, sel);
- }else {
- insertText('[img]' + mapsrc + '[/img]', 0, 0, false, sel);
- }
- hideMenu('', 'win');
- break;
复制代码 该文件修改完成。
2)打开editor.css文件
在头部添加以下代码- #e_googlemap { background:transparent url({STATICURL}image/common/map.gif) no-repeat 0 0; overflow: hidden;background-position: 5px 1px;}
复制代码 此文件修改完成
3)打开post_editor_body.htm文件
找到“<a id="{$editorid}_fls" title="{lang e_flash_title}">{lang e_flash}</a>”,在其后添加以下代码此文件修改完毕。
注:添加在这里的话,该功能的使用权限与多媒体代码相同,也可放到其他地方。
4)将googlemap文件包上传到网站根目录。
5)即可。
效果如下:
|