名称:检索地图位置

内容:地图初期显示和检索显示

功能:根据条件检索地图的经度与纬度

1.在这之前我们需要创建一个表(Accoun__c),添加一个重要的字段地理位置情報,它会默认的给你两个字段经度和纬度。

2.然后在Eclipse中往表的字段添加一些内容

3.因为需要调数据,所以要page页面与控制器进行交互

4.这里我用到了@RemoteAction(远程操作)的Ajax请求,具体代码如下:

 <apex:page controller="CL_MapDoSearchController">
 <head>
 <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
 <script type="text/javascript" src="http://maps.google.cn/maps/api/js?sensor=false"></script>
 <script type="text/javascript">

             function myLoad() {              // 初期显示
              var myLatLng = new google.maps.LatLng(12, 14);
                 var myOptions = {
                     zoom: 15,
                     center: myLatLng,
                     mapTypeId: google.maps.MapTypeId.ROADMAP
                 };
                 var map = new google.maps.Map(document.getElementById("map"), myOptions);
                 var hidden = document.getElementById("{!$Component.form.pageBlock1.hidden}").value;
                if(hidden == "true"){         // 根据判断来执行
                    dosearch();                     // 检索
                }
             }

             function dosearch(){
                 Visualforce.remoting.Manager.invokeAction (   // 远程操作
                 '{!$RemoteAction.CL_MapDoSearchController.selectList}',
                 document.getElementById("j_id0:form:pageBlock1:j_id2:j_id3:a").value,
                 document.getElementById("j_id0:form:pageBlock1:j_id2:j_id5:b").value,
                 document.getElementById("j_id0:form:pageBlock1:j_id2:j_id7:c").value,
                 resultFunction,
                 {escape: true}
               );
               }
               function resultFunction(result, event){         // result:是List数据结果           

                     if (event.status) {                       // 写条件的过程

                             if(result != null && result.length > 0) {
                                var myLatLng = new google.maps.LatLng(39, 12);
                                var myOptions = {
                                    zoom: 15,
                                    center: myLatLng,
                                    mapTypeId: google.maps.MapTypeId.ROADMAP
                               };
                           var map = new google.maps.Map(document.getElementById("map"), myOptions); 

                            for (var i=0;i<result.length;i++){
                                var lng = result[i].location__Longitude__s;  // 经度的字段
                         var lat = result[i].location__Latitude__s;   // 纬度的字段
                         var myLatLng1 = new google.maps.LatLng(lat, lng);

                                   var j = i+1+"";                 // 循环显示的次数
                            // 图标显示的地点
                               var marker = new google.maps.Marker({                                         position: myLatLng1,
                                   label:j,
                                   map: map,                                   icon: "http://img.zcool.cn/community/01d9b15541bb21000001e78c6478c5.jpg@24w_32h_1c_1e_2o.png",
                                   draggable: false
                              });
                          }
                            }
                       }
                }
                                        window.onload = myLoad;
 </script>

 <style>
 #map {
     width: 500px;
     height: 400px;
     float: left;
 }
 </style>
 </head>
 <div id="map"></div>
         <apex:form id="form">
             <apex:pageBlock id="pageBlock1">
                 <apex:inputHidden id="hidden" value="{!hidden}"/>
                 <apex:pageBlockSection >
                     <apex:pageBlockSectionItem >
                         <apex:outputLabel value="災害ID">
                             <apex:inputText value="{!saigaiCode}" id="a"/>
                         </apex:outputLabel>
                     </apex:pageBlockSectionItem>
                     <apex:pageBlockSectionItem >
                         <apex:outputLabel value="状態">
                             <apex:inputText value="{!JotaiCode}" id="b"/>
                         </apex:outputLabel>
                     </apex:pageBlockSectionItem>
                     <apex:pageBlockSectionItem >
                         <apex:outputLabel value="状態コード">
                             <apex:inputText value="{!JotCode}" id="c"/>
                         </apex:outputLabel>
                     </apex:pageBlockSectionItem>
                 </apex:pageBlockSection>
                 <apex:commandButton value="検索" onclick="dosearch();" action="{!doIt}" />
             </apex:pageBlock>
         </apex:form>

 </apex:page>

page

注意:在控制器里的SOQL语句中进行判断,页面上就不需要进行判断了

 public with sharing class CL_MapDoSearchController {
     public String saigaiCode{set;get;}                 // 災害ID
     public String JotaiCode{set;get;}                  // 状態
     public String JotCode{set;get;}                    // 状態コード
     public boolean hidden{set;get;}                    // boolean

      public CL_MapDoSearchController(){
           hidden = false;
      }
      public void doIt(){                               // 检索的条件
           hidden = true;
      }

   @RemoteAction        // 远程操作(Ajax响应),要想被调用,就得使用static修饰
     /**
      * 選択
      */
        public static List<Accoun__c> selectList(String saigaiCode, String JotaiCode, String JotCode) {
            list<Accoun__c> accounList = new list<Accoun__c>();
             String strSql = ' ';
             String strWhere = ' where ';
             // 取得項目:
             strSql +='SELECT ';
             // Id,
             strSql +='Id, ';
             //経度(location__Longitude__s),
             strSql +='location__Longitude__s, ';
             //緯度(location__Latitude__s),
             strSql +='location__Latitude__s ';
             // オブジェクト: (Accoun__c)
             strSql +='FROM ';
             strSql +='Accoun__c ';

              // 在控制器进行判断,页面就不需要判断
              if (String.isNotEmpty(saigaiCode)) {
             // 災害ID(SaigaiId__c)
             strWhere = strWhere + ' SaigaiId__c = :saigaiCode  AND ';
         }
             if (String.isNotEmpty(JotaiCode)) {
             // 状態(Jotai__c)
             strWhere = strWhere + 'Jotai__c =:JotaiCode  AND ';
         }
             if (String.isNotEmpty(JotCode)) {
             // 状態コード(JotaiCode__c)
             strWhere = strWhere + 'JotaiCode__c =:JotCode  AND ';
         }    

             if(strWhere != ' where '){
                 strSql = strSql + strWhere.removeEnd('AND ');
             }
             // ソート
             strSql +=' order by ';
             // 支社コード,営業所コード,係コード,班コード
             strSql +=' location__Longitude__s, location__Latitude__s ';

             accounList = Database.query(strSql);

             return accounList;
       }
 }

class

反省:对于加载页面的初期显示和检索之后的显示,我有点小挫折,因为我的页面加载后初期显示和检索是一样的,最后是用到boolean来判断指定才解决。

 page:
    var hidden = document.getElementById("{!$Component.form.pageBlock1.hidden}").value;
             if(hidden == "true"){
                        dosearch();
                 }

     <apex:inputHidden id="hidden" value="{!hidden}"/>
                   <apex:pageBlockSection >

 class:
        public boolean hidden{set;get;}               // boolean

         public CL_MapDoSearchController(){
             hidden = false;
     }
        public void doIt(){                                  // 检索的条件
             hidden = true;
     }

检索Google Maps地图位置(小训练)的更多相关文章

  1. 【Silverlight】Bing Maps学习系列(八):使用Bing Maps Silverlight Control加载自己部署的Google Maps

    [Silverlight]Bing Maps学习系列(八):使用Bing Maps Silverlight Control加载自己部署的Google Maps 上个月微软必应地图(Bing Maps) ...

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

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

  3. Google Map API抓取地图坐标信息小程序

    因为实验室需要全国城市乡镇的地理坐标,有Execl的地名信息,需要一一查找地方的经纬度.Google Map地图实验室提供自带的查找经纬度的方法,不过需要一个点一个点的手输入,过于繁琐,所以自己利用G ...

  4. google maps js v3 api教程(2) -- 在地图上添加标记

    原文链接 google maps javascript官方文档:https://developers.google.com/maps/documentation/javascript/ 我们在创建地图 ...

  5. google maps js v3 api教程(1) -- 创建一个地图

    原文地址 google maps javascript官方文档:https://developers.google.com/maps/documentation/javascript/ 在创建地图之前 ...

  6. Google Maps瓦片(tile)地图文件下载(1-11层级)

    整理硬盘时,发现一份去年下载的谷歌地图瓦片文件,整理并分享给大家. 地图来源:Google Maps(应该是国内谷歌地图) 采集时间:2017年6月 采集范围:0-6层级世界范围:7-11层级中国范围 ...

  7. [转]MBTiles 离线地图演示 - 基于 Google Maps JavaScript API v3 + SQLite

    MBTiles 是一种地图瓦片存储的数据规范,它使用SQLite数据库,可大大提高海量地图瓦片的读取速度,比通过瓦片文件方式的读取要快很多,适用于Android.IPhone等智能手机的离线地图存储. ...

  8. 谷歌地图,国内使用Google Maps JavaScript API,国外业务

    目前还是得墙 <!DOCTYPE html> <html> <head> <meta name="viewport" content=&q ...

  9. 如何插入谷歌地图并获取javascript api 秘钥--Google Maps API error: MissingKeyMapError

    参考:https://blog.csdn.net/klsstt/article/details/51744866 Google Maps API error: MissingKeyMapError h ...

随机推荐

  1. UGUI Text(Label)

    环境 Unity 5.3.6f1 关于Best Fit 如果勾选了 Best Fit ,当有大量的文本填充在Text上时,那么文字是不会自动换行的. 打字机效果 在github上已有现成的:https ...

  2. 入园记------我的DBA之路

    今天周一拖着疲惫的身躯 11点才离开公司,回到家估计写完这篇博客就要17号了. 一个人走在回家的路上,很黑,突然很多感触,一个人在北京拼搏,不敢停止学习的脚步,因为只要停下来就会感觉到孤独. 回顾一下 ...

  3. Spring7:基于注解的Spring MVC(下篇)

    Model 上一篇文章<Spring6:基于注解的Spring MVC(上篇)>,讲了Spring MVC环境搭建.@RequestMapping以及参数绑定,这是Spring MVC中最 ...

  4. Nodejs之MEAN栈开发(五)---- Angular入门与页面改造

    这个系列一共会涉及两个JavaScript框架的讲解,一个是Express用做后端,一个是Angular用于前端.和Express一样,Angular分离内容,处理视图.数据和逻辑.和MVC模式很相似 ...

  5. 2000条你应知的WPF小姿势 基础篇<34-39 Unhandled Exceptions和Resource>

    在正文开始之前需要介绍一个人:Sean Sexton. 来自明尼苏达双城的软件工程师.最为出色的是他维护了两个博客:2,000Things You Should Know About C# 和 2,0 ...

  6. C# BS消息推送 负载均衡-SignalR&Redis的配置(三)

    1. 前言 本文是根据网上前人的总结得出的. 环境: SignalR2.x,VS2015,Win10 2. 负载均衡配置 配置很简单,只要在startup类中添加Redis的连接就OK. 1)首先,引 ...

  7. iOS实现UICollectionViewDataSource与Controller的分离

    之前每次用到UICollectionView的时候都会都需要在Controller里面去实现DataSource & Delegate方法 单独Delegate方法还好不是很多, 但是再加上D ...

  8. 测试计划(Test Plan)

    测试计划(Test Plan) 版权声明:本文为博主原创文章,未经博主允许不得转载. 测试计划的概念: 测试计划是一个文档,描述了进行测试的测试范围,测试策略和方法,测试资源和进度.是对整个测试活动进 ...

  9. Kindeditor在ThinkPHP框架下的使用

    1.简单调用Kindeditor的图片上传功能: a.Html部署图片预览,记录图片上传成功之后的路径,以及上传图片点击按钮 <tr> <td>活动图片:</td> ...

  10. PHP 面向对象编程和设计模式 (3/5) - 单例模式和工厂模式

    PHP高级程序设计 学习笔记 2014.06.11 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容 ...