检索Google Maps地图位置(小训练)
名称:检索地图位置
内容:地图初期显示和检索显示
功能:根据条件检索地图的经度与纬度
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地图位置(小训练)的更多相关文章
- 【Silverlight】Bing Maps学习系列(八):使用Bing Maps Silverlight Control加载自己部署的Google Maps
[Silverlight]Bing Maps学习系列(八):使用Bing Maps Silverlight Control加载自己部署的Google Maps 上个月微软必应地图(Bing Maps) ...
- Google Maps API显示地图的小示例
来源:http://www.ido321.com/1089.html 效果(新版Firefox中测试): 代码: <!DOCTYPE> <html> <head> ...
- Google Map API抓取地图坐标信息小程序
因为实验室需要全国城市乡镇的地理坐标,有Execl的地名信息,需要一一查找地方的经纬度.Google Map地图实验室提供自带的查找经纬度的方法,不过需要一个点一个点的手输入,过于繁琐,所以自己利用G ...
- google maps js v3 api教程(2) -- 在地图上添加标记
原文链接 google maps javascript官方文档:https://developers.google.com/maps/documentation/javascript/ 我们在创建地图 ...
- google maps js v3 api教程(1) -- 创建一个地图
原文地址 google maps javascript官方文档:https://developers.google.com/maps/documentation/javascript/ 在创建地图之前 ...
- Google Maps瓦片(tile)地图文件下载(1-11层级)
整理硬盘时,发现一份去年下载的谷歌地图瓦片文件,整理并分享给大家. 地图来源:Google Maps(应该是国内谷歌地图) 采集时间:2017年6月 采集范围:0-6层级世界范围:7-11层级中国范围 ...
- [转]MBTiles 离线地图演示 - 基于 Google Maps JavaScript API v3 + SQLite
MBTiles 是一种地图瓦片存储的数据规范,它使用SQLite数据库,可大大提高海量地图瓦片的读取速度,比通过瓦片文件方式的读取要快很多,适用于Android.IPhone等智能手机的离线地图存储. ...
- 谷歌地图,国内使用Google Maps JavaScript API,国外业务
目前还是得墙 <!DOCTYPE html> <html> <head> <meta name="viewport" content=&q ...
- 如何插入谷歌地图并获取javascript api 秘钥--Google Maps API error: MissingKeyMapError
参考:https://blog.csdn.net/klsstt/article/details/51744866 Google Maps API error: MissingKeyMapError h ...
随机推荐
- 【QQ红包】手机发抢不到的口令红包
这方法95%的人都抢不了 在QQ输入框输入一个表情,例如:阴险那个表情 将表情剪切到口令红包的口令里 这时候口令里的那个表情表情变成了符号 将符号删去一格,然后全选.复制 然后返回到QQ输入框粘贴 然 ...
- BZOJ 1391: [Ceoi2008]order [最小割]
1391: [Ceoi2008]order Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 1509 Solved: 460[Submit][Statu ...
- 使用C#给Linux写Shell脚本
在这个逼格决定人格,鄙视链盛行的年头,尤其是咱们IT界,请问您今天鄙视与被鄙视的次数分别是多少?如果手中没有一点压箱的本事,那就只有看的份了.今天我们也要提升下自己的格调,学习些脑洞大开的东西,学完之 ...
- 【开源】知乎日报UWP 更新
说明 大概十天之前我更新了一次APP,后来又仔细看了一下Store里的评论,发现还有几个地方没有改过来.于是前天晚上抽时间改了一下,顺便完善了一下UI体验. 没有看前面文章的童鞋可以看一下下面的链接: ...
- C++的性能C#的产能?! - .Net Native 系列《三》:.NET Native部署测试方案及样例
之前一文<c++的性能, c#的产能?!鱼和熊掌可以兼得,.NET NATIVE初窥> 获得很多朋友支持和鼓励,也更让我坚定做这项技术的推广者,希望能让更多的朋友了解这项技术,于是先从官方 ...
- Atitit各种SDM 软件开发过程SDP sdm的ddd tdd bdd设计
Atitit各种SDM 软件开发过程SDP sdm的ddd tdd bdd设计 1.1. software development methodology (also known as SDM 1 1 ...
- 引用MVC源码的小问题
vs2010自己创建的MVC项目,排除掉System.Web.Mvc引用后,引用源码,直接运行会提示引用冲突,这个是因为配置文件的问题,只要把配置文件中assemblies节点下的 <add a ...
- 【前端安全】JavaScript防http劫持与XSS
作为前端,一直以来都知道HTTP劫持与XSS跨站脚本(Cross-site scripting).CSRF跨站请求伪造(Cross-site request forgery).但是一直都没有深入研究过 ...
- linux定时备份mysql并同步到其它服务器
数据在任何一家公司里面都是最核心的资产,定期备份则是为了保证数据库出现问题的时候能够及时回滚到最近的备份点,将损失缩小到最小 这篇文章将会两部分来说明:1.mysql的定期备份:2.同步到其它服务器 ...
- java笔记--笔试中极容易出错的表达式的陷阱
我相信每一个学过java的人儿们都被java表达式虐过,各种"肯定是它,我不可能错!",然后各种"尼玛,真假,怎么可能?",虽然在实际开发中很少会真的让你去使用 ...