初识SFDC创建一个google map(添加了marker小图标让他可以去到你输入的经纬度上)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初识SFDC创建一个google map(添加了marker小图标让他可以去到你输入的经纬度上)相关的知识,希望对你有一定的参考价值。

 1 <apex:page >
 2     <head>
 3         <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
 4         <script type="text/javascript" src="http://maps.google.cn/maps/api/js?sensor=false"></script>
 5         <script type="text/javascript">
 6             function myLoad() { 
 7                 
 8                 
 9                 lat = document.getElementById("{!$Component.form.pageBlock1.text1}").value;
10                 
11                                 
12                 lng = document.getElementById("{!$Component.form.pageBlock1.text2}").value;
13                 
14                     var myLatLng = new google.maps.LatLng(lat, lng);
15                 var myOptions = {
16                     zoom: 15,
17                     center: myLatLng,                    
18                     mapTypeId: google.maps.MapTypeId.ROADMAP
19                 };
20                 var map = new google.maps.Map(document.getElementById("map"), myOptions);
21           
22                 var marker = new google.maps.Marker({
23                       position: myLatLng,
24                       draggable: true
25                   });
26                   marker.setMap(map);
27                   
28                   var win2 = null;
29                   //添加了侦听每次移动都会生成新的win1,但是会重叠覆盖;
30                 google.maps.event.addListener(marker, ‘dragend‘, function() {
31                     var win1 = new google.maps.InfoWindow({
32                             content: "経度:" + marker.position.lat() + " " + "緯度:" + marker.position.lng()
33                       });
34                     win1.open(map, marker);
35                     //每次都关闭上一个就不会有重复了;
36                     if(win2) {
37                         win2.close();
38                     }
39                         win2 = win1;
40                 });
41             }
42             window.onload = myLoad;
43         </script>    
44     </head>
45     <body>
46         <style>
47               #map {
48                 width: 500px;
49                 height: 400px;
50                 float: left;
51               }
52           </style>
53           <div id="map"></div>
54          <apex:form id="form">
55              <apex:pageBlock id="pageBlock1">
56                  <apex:inputText id="text1"/>
57                  <apex:inputText id="text2"/>
58                  <apex:pageBlockButtons >
59                      <apex:commandButton onclick="myLoad()" value="change"/>
60                  </apex:pageBlockButtons>
61              </apex:pageBlock>
62              <apex:pageBlock >
63              
64                  
65              </apex:pageBlock>
66              
67          </apex:form>
68     </body>
69 </apex:page>

其实就是这两句话啦。在下面添加两个 apex:inputText输入框,设置上ID然后后通过{!$Component.form.pageBlock1.text1}每一级的ID获取,就可以获取到你输入的地址然后定位了。

          lat = document.getElementById("{!$Component.form.pageBlock1.text1}").value; 10 11 12 lng = document.getElementById("{!$Component.form.pageBlock1.text2}").value;
本列要注意的地方有很多
1,必须用IE浏览器打开WIN10的不好用;
2,我原来获取ID的时候是在浏览器页面按F12,然后选择你要的组件,它就会告诉你ID。好处是不需要自己手动的给每一级都添加ID,缺点也很明显就是每次只要你改动<body></body>里面的内容,id就会改变,每次都要重新获取,直到我看见了别人这么写才…………
3,就是上一个例子里提到的
marker.position.lat()
marker.position.lng()这两个方法,草鸡好用,直接帮获取到经纬度。
4,这是我最无语错误,由于本例刚刚加载完毕的时候,是没有输入经纬度的,所以它有一个默认的地址,是在海上……在海上……海上……以至于我以为一直没有加载出来,直到我师傅过来拨了拨我的鼠标滚轮(缩放)然后才看见其他的东西,
5,就是其实可以不用添加button组件的,只要输入新的经纬度,enter就可以跳转,这个很神奇为什么enter的时候inputText里面的东西没被清空,被保留了呢?求教!!!

以上是关于初识SFDC创建一个google map(添加了marker小图标让他可以去到你输入的经纬度上)的主要内容,如果未能解决你的问题,请参考以下文章

初识SFDC创建一个google map(添加了marker小图标上的小框框InfoWindow可变更文字)

初识SFDC创建一个google map(添加了marker小图标让他可以去到你输入的经纬度上)

初识SFDC创建一个google map(最基础版本)

SFDC 10 google定位

12,SFDC 管理员篇 - 页面配置

google maps js v3 api教程 -- 在地图上添加标记