作者:卞功鑫  ,转载请保留。http://www.cnblogs.com/BinBinGo/p/5274409.html

需要背景:

现在已经有经纬度,需要在地图上显示出来。

环境: CRM 4.0

实现:

1 在CRM创建新tab,添加一个 IFRAME_DT

2 新建一个html网页,可以接收URL的参数,其实主要是经纬度的数值。

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<style type="text/css">
body, html,#allmap {width: 100%;height: 100%;overflow: hidden;margin:0;}
</style>
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=百度开发key"></script>
<title>ditu</title>
</head>
<body>
<div id="allmap" ></div>
</body>
</html>
<script type="text/javascript"> var x = 119.37661;
var y = 34.66922;
var name ='kanion';
var new_x = GetQueryString("x");
var new_y = GetQueryString("y");
var new_name = GetQueryString("name"); if(new_x!="")
{
x=new_x;
}
if(new_y!="")
{
y=new_y;
}
if(new_name!=""&&new_x!="" &&new_y!="")
{
name=new_name;
} var ggPoint = new BMap.Point(x,y);
var bm = new BMap.Map("allmap");
bm.centerAndZoom(ggPoint, 15);
//bm.panBy(400,300);
bm.addControl(new BMap.NavigationControl());
bm.enableScrollWheelZoom(true);
var convertor = new BMap.Convertor();
var pointArr = [];
pointArr.push(ggPoint);
convertor.translate(pointArr, 1, 5, function(data){
if(data.status === 0) {
var marker = new BMap.Marker(data.points[0]);
bm.addOverlay(marker);
var label = new BMap.Label(name,{offset:new BMap.Size(20,-10)});
marker.setLabel(label); } }); function GetQueryString(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
var r = window.location.search.substr(1).match(reg);
if (r != null) return (r[2]); return null;
} </script>

showPIO.html

3 在CRM表单 onload事件中使用拼接字符串加入参数。

这里一般应该是加入在ISV里的,但是客户系统中没有找到对应的ISV,但是发现系统中有个webserver的端口,所以把HTML文件放入了 些端口下的文件夹了。

//加载地图
var x = crmForm.all.new_lng.DataValue;
var y = crmForm.all.new_lat.DataValue;
var name = crmForm.all.new_accountid.DataValue[0].name;
document.getElementById("tab1").style.DISPLAY="inline"
//此处很重要,不然地图中心点会在左上角显示
crmForm.all.IFRAME_qddt.src = "http://" + document.URL.split("/")[2] + ":8080/showPIO.html?x=" + x + "&y=" + y + "&name=" + name;

没有什么好说的只是 document.getElementById("tab1").style.DISPLAY="inline" 这个很重要

如果没有上面这句,CRM的tab 只有第一个tab0的style.DISPLAY="inline" 

百度地图在初始化的时候,隐藏的 div会导致,地图认为 网页的宽高都为0,所以地图的中心点也为(0,0)。就导致了,地图的中心点显示在了左上角。

所以在绑定showPOI.html网页的时候先,把tab1的style.DISPLAY="inline" 。

如果其它情况下,无法设置 div的属性,可以采取强制偏移的方法试试

    var ggPoint = new BMap.Point(x,y);
var bm = new BMap.Map("allmap");
bm.centerAndZoom(ggPoint, 15);
bm.panBy(400,300);//强制偏移

后记: tab 的点击事件,可以通过点击时再绑定网页。

crmForm.all.tab1Tab.onclick = function() {
alert("Tab 1 clicked");
}

本文完。

CRM IFRAME 显示地图的更多相关文章

  1. Google Maps API显示地图的小示例

    来源:http://www.ido321.com/1089.html 效果(新版Firefox中测试): 代码: <!DOCTYPE> <html> <head> ...

  2. Swift - 使用MapKit显示地图,并在地图上做标记

    通过使用MapKit可以将地图嵌入到视图中,MapKit框架除了可以显示地图,还支持在地图上做标记. 1,通过mapType属性,可以设置地图的显示类型 MKMapType.Standard :标准地 ...

  3. 转载-SharePoint 2010 WebPart与Google地图系列 一:创建显示地图的WebPart

    [原] SharePoint 2010 WebPart与Google地图系列 一:创建显示地图的WebPart 摘要: 作为信息化先驱的产品SharePoint 2010竟然对GIS相关技术支持如此有 ...

  4. openlayers一:显示地图与鼠标地理坐标

    openlayers两个好用的开源JS互动地图库之一,另一个是leaflet. openlayers的特点是是大而全,自身包含绝大多数功能,文档好看. leaflet是小而美,自身小,但支持扩展,好用 ...

  5. 百度地图api通过地址显示地图,白名单

    百度地图api通过地址显示地图,白名单 http://developer.baidu.com/map/jsdemo.htm#i7_1?qq-pf-to=pcqq.c2c---------------- ...

  6. (android 地图实战开发)2 创建MapActivity,根据设备当前位置,显示地图

    (android 地图实战开发)2 创建MapActivity,根据设备当前位置,显示地图 http://www.cnblogs.com/macroxu-1982/archive/2011/09/13 ...

  7. android菜鸟学习笔记30----Android使用百度地图API(一)准备工作及在应用中显示地图

    1.准备工作: 百度地图API是免费开放的,但是需要申请API Key: 1)先注册一个百度开发者帐号 2)进入百度开放服务平台http://developer.baidu.com/ 3)进入LBS云 ...

  8. 百度地图设置div样式宽高为百分比不显示地图

    如题,不显示地图只要在样式代码里面加以 position:absolute; 代码就可以了 <style type="text/css"> body, html,#al ...

  9. 【Silverlight】Bing Maps学习系列(二):通过Bing Maps Silverlight Control如何显示地图(转)

    [Silverlight]Bing Maps学习系列(二):通过Bing Maps Silverlight Control如何显示地图 如本系列第一篇你所介绍的,开发基于Silverlight的Bin ...

随机推荐

  1. linq实现左连接

    1.左连接: var LeftJoin = from emp in ListOfEmployees join dept in ListOfDepartment on emp.DeptID equals ...

  2. Q5: Remove Duplicates from Sorted Array

    问题描述: Given a sorted array, remove the duplicates in place such that each element appear only once a ...

  3. IOS:被误解的MVC和被神化的MVVM

    MVC的历史 MVC,全称是 Model View Controller,是模型 (model)-视图 (view)-控制器 (controller) 的缩写.它表示的是一种常见的客户端软件开发框架. ...

  4. Saiku操作界面的简化

    在安装完毕Saiku后,由于是社区版本,所以界面上存在很多升级为商业版的文字.为了使得系统不那么碍眼,可通过如下方式更改来去除相应的内容: 1.去除查询页面的升级为商业版的提示 You are usi ...

  5. C#连接SQL Server数据库进行简单操作

    环境:VS2010 + SqlServer 2008 首先,按照面向对象的程序设计思想,设计一个数据库操作工具类MyTool.cs,该类中封装了关于数据库连接和操作的方法,各个功能模块在需进行数据库操 ...

  6. openstack(liberty):部署实验平台(二,简单版本软件安装 part2)

    继续前面的part1,将后续的compute以及network部分的安装过程记录完毕! 首先说说compute部分nova的安装. n1.准备工作.创建数据库,配置权限!(密码依旧是openstack ...

  7. [摘]Hibernate查询事务必要性

    背景: 添加事务与否都不影响Hibernate的查询操作. 问题: 查询操作是否有必要添加事务? 答案1: Hibernate官方手册上建议任何操作(增删改查)都需要添加事务. 答案2: robbin ...

  8. Hibernate3回顾-4-事务和并发管理

    4.事务和并发 Hibernate是对JDBC的轻量级对象封装,Hibernate本身是不具备Transaction处理功能的,Hibernate的Transaction实际上是底层的JDBC Tra ...

  9. RESRful API 和 HTTP状态码

    一.RESRful API: GET(SELECT):从服务器取出资源(一项或多项). POST(CREATE):在服务器新建一个资源. PUT(UPDATE):在服务器更新资源(客户端提供改变后的完 ...

  10. mongodb基本语句使用

    mongodb学习:##mongodb基础##数据库常用命令##用户相关##修改.添加.删除集合数据##条件操作符##创建表 ------------------------------------- ...