`

2010.02.23——google map api----五岳剑派 拖拽的标注

阅读更多
2010.02.23——google map api----五岳剑派 拖拽的标注

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML ><HEAD><TITLE>五岳剑派</TITLE>
<script type="text/javascript" src="http://ditu.google.cn/maps?file=api&amp;v=2&amp;key=abcdefg&sensor=true_or_false"></script>

<SCRIPT type="text/javascript">
  //<![CDATA[

  // Copyright 2007 Google Inc.
  // All Rights Reserved.

  /**
   * 这个例子演示了 Google 地图 API 的以下功能:
   *   * 可拖拽的标注
   *   * 自定义标注的图标
   *   * 计算地理距离
   *   * 事件处理(单击)
   *   * 消息提示窗口(气泡窗口)
   *   * 和文档模型(DOM)交互
   *
   * @author haogang
   */

  var targets = [
    {'name':'东岳泰山', 'pt':[36.207715, 117.144470], 'icon':'images/red'},
    {'name':'西岳华山', 'pt':[34.525793, 110.048676], 'icon':'images/blue'},
    {'name':'南岳衡山', 'pt':[27.293689, 112.806244], 'icon':'images/yellow'},
    {'name':'北岳恒山', 'pt':[39.607804, 113.656311], 'icon':'images/purple'},
    {'name':'中岳嵩山', 'pt':[34.523389, 113.005028], 'icon':'images/green'}
  ];
  
  var markers = [];          // 给用户拖拽的标注
  var targetMarkers = [];    // 显示正确答案的标注
  var showAnswer = true;     // 当前的视图模式(解题模式,答案模式)
  var map;                   // 全局的 Google Map 控件
  
  var error = 100;           // 判断正误时允许的误差,以公里为单位

  /**
   * 在表格里显示图例,帮助用户了解不同标注的含义
   */
  function loadTableItems() {
    for (i = 0; i < targets.length; i++) {
      document.write('<tr><td><img src="' + targets[i]['icon'] 
          + '.png"/>  ' + targets[i]['name'] + '</td></tr>');
    }
  }

  /**
   * 在“解题模式”和“答案模式”间切换,同时也更改切换按钮的标签
   */    
  function switchMarkers() {
    showAnswer = !showAnswer;

    // 先清除掉当前的所有标注
    map.clearOverlays();
    
    // 再根据当前模式加入对应的标注
    for (i = 0; i < targets.length; i++) {
      map.addOverlay(showAnswer ? targetMarkers[i] : markers[i]);
    }

    var switcher = document.getElementById('switcher');
    switcher.value = showAnswer ? '隐藏答案' : '显示答案';
  }
  
  /**
   * 为气泡提示窗口创建 DOM 对象,包括地点的名称和简要描述
   * @param {Number} i 该地点在 targets 数组中的下标
   */
  function createInfoWindow(i) {
    // 从网页的隐藏部分载入该地点的描述性文字
    var targetDescs = document.getElementById('targetDescs');
    var desc = targetDescs.getElementsByTagName('div')[i].innerHTML;

    // 为气泡提示窗口创建动态 DOM 对象,这里我们用 DIV 标签
    var div = document.createElement('div');
    div.innerHTML = '<div style="font-size: 9pt; width:300px"><b>'
        + targets[i]['name'] + '</b><br/>' + desc + '</div>';

    // 当用户关闭气泡时 Google Map API 会自动释放该对象  
    return div;
  }
  
  /**
   * 本函数为每个地点创建两个标注:一个给用户拖拽,另一个显示标准答案
   * @param {Number} i 该地点在 targets 数组中的下标
   */
  function createMarker(i) {

    // 先创建给用户拖拽的标注:一开始它们依次排列在地图的左上角
    // 下一行代码演示了如何将 map 控件的像素坐标转化为经纬度
    var initPt = map.fromContainerPixelToLatLng(new GPoint((i + 1) * 30, 50));
    var ico = new GIcon(G_DEFAULT_ICON, targets[i]['icon'] + '.png');

    // 参数 draggable: true 表示可拖拽
    markers.push(new GMarker(initPt, { draggable: true, icon: ico }));

    // 再创建正确答案的标注:将它们放在正确的位置上,而且是不可拖拽的
    var targetPt = new GLatLng(targets[i]['pt'][0], targets[i]['pt'][1]);
    var marker = new GMarker(targetPt, { icon: new GIcon(ico) });
    targetMarkers.push(marker);

    // 为正确答案标注添加事件处理函数:用户单击它时会弹出气泡提示
    GEvent.addListener(marker, 'click', 
        function() {
          marker.openInfoWindow(createInfoWindow(i));
        }
    );
  }
  
  
  /**
   * 比较用户的答案和正确答案,并给用户打分
   */
  function judge() {
    var correct = 0;
    for (i = 0; i < targets.length; i++) {
      // 获得对应的两个坐标,并求出它们的距离 dist (以米为单位)
      var target = new GLatLng(targets[i]['pt'][0], targets[i]['pt'][1]);
      var marker = markers[i].getPoint();
      var dist = target.distanceFrom(marker);

      // 根据误差判断正误,并根据正误将标注的图标切换为“勾”或“差”
      if (dist > error * 1000) {
        markers[i].getIcon().image = targets[i]['icon'] + '_cross.png';
      } else {
        markers[i].getIcon().image = targets[i]['icon'] + '_tick.png';
        correct++;
      }
    }

    // 计算得分(正确率)
    var score = document.getElementById('score');
    score.innerHTML = correct * 100 / targets.length;

    // 保证切换到“解题模式”,用户才能看到图标的变化,从而知道哪些错了
    if (showAnswer) {
      switchMarkers();
    } else {
      // 刷新地图:必须重新添加标注,才能反映图标的变化
      for (i = 0; i < targets.length; i++) {
        map.removeOverlay(markers[i]);
        map.addOverlay(markers[i]);    
      }
    }
  }

  /**
   * 创建地图控件,以及两组标注
   */
  function load() {
    if (GBrowserIsCompatible()) {
      map = new GMap2(document.getElementById('map'));
      // 将视图移到中国
      map.setCenter(new GLatLng(37, 107), 4);

      // 为 targets 数组中的每个地点,创建两个标注
      for (i = 0; i < targets.length; i++) { 
        createMarker(i);
      }
      // 进入“解题模式”
      switchMarkers();
    }
  }

  //]]>
  </SCRIPT>

<META content="MSHTML 6.00.3790.4357" name="GENERATOR"></HEAD>
<BODY onload="load()" onunload="GUnload()">
<TABLE width="100%">
  <TBODY>
  <TR>

    <TD style="WIDTH: 700px">
      <DIV id="map" style="WIDTH: 700px; HEIGHT: 500px"></DIV></TD>
    <TD vAlign="top"><B>请在地图中标出以下位置:</B><BR>
      <HR>

      <TABLE id="targetList" width="100%">
        <TBODY>
        <SCRIPT 
        type="text/javascript">
           loadTableItems();
        </SCRIPT>

        </TBODY></TABLE>
      <HR>
<INPUT onclick="judge()" type="button" value="评判"> <INPUT id="switcher" onclick="switchMarkers()" type="button" value="switcher"> 
      <HR>
      <B>得分:<SPAN id="score" style="COLOR: red"></SPAN></B> </TD></TR></TBODY></TABLE>
<DIV id="targetDescs" style="DISPLAY: none">
<DIV>位于山东省泰安县境的泰山,又称“岱宗”、“岱”即大山,“岱”为长辈,意即:泰山是中国大山的长辈。泰山雄踞于山东省中部,海拔1545米。 </DIV>
<DIV>西岳华山位于西安市东120公里处的华阴县城南,海拔2200米,以奇险峻秀著称,素称“天下奇险第一山”,也是著名的道教圣地之一。 </DIV>
<DIV>衡山又称南岳,位于湖南省衡山县,山势雄伟,绵延数百公里。七十二峰中以祝融、天柱、芙蓉、紫盖、石 五峰最有名。最高峰为祝融峰,海拔1290米。 

</DIV>
<DIV>五岳中以北岳恒山最高,位于山西省浑源县城南四公里处,绵延150余公里。主峰天峰领海拔2017米。高耸入云,给人以顶天立地之感。 </DIV>
<DIV>中岳嵩山,位于河南省登峰县境,因地处中原,古称“中岳”。其主峰峻极峰海拔1584米。 山峰多寺也多,有“上有七十二峰、下有七十寺”之说。 
</DIV></DIV></BODY></HTML>


分享到:
评论

相关推荐

    infrared-remote-candroid studiodemo

    android studio下载

    【新质生产力】新质生产力赋能智能制造数字化解决方案.pptx

    【新质生产力】新质生产力赋能智能制造数字化解决方案.pptx

    基于matlab实现的用于应用布格重力异常数据反演地下异常密度体.rar

    基于matlab实现的用于应用布格重力异常数据反演地下异常密度体.rar

    node-v8.10.0-linux-x64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    基于Yolov5目标检测和deepsort目标跟踪无人机跟踪.zip

    无人机最强算法源码,易于部署和学习交流使用

    数据库课程设计实战.zip

    数据库课程设计后端 使用Springboot + Mybatis + Redis + Maven 数据库课程设计实战.zip,使用到了所有的相关SQL 的操作,如增删改查等,让你可以在一个项目里面,锻炼到所有的数据库相关的知识。项目亲测可以运行,里面含有运行相关的文档,不会的可以丝我请求帮助。 数据库课程设计后端 使用Springboot + Mybatis + Redis + Maven 具体的表和相关的数据如下: 用户(电话号码,密码,身份证号,邮箱,真实姓名,用户类型,性别,地址) 乘客(用户电话号码,乘客身份证号,乘客真实姓名,乘客电话号码,乘客类型,地址) 列车信息(列车编号,车次,列车类型,列车车厢数,列车始发站,列车终点站,列车开车时间,列车到达时间,列车到达日期,列车运行时间,列车状态) 列车座位信息(列车编号,车厢号,座位类型,座位数) 列车经停信息(列车编号,车次,车站编号,车站名,到达时间,总运行时间,开车时间) 订单信息(订单编号,用户电话号码,乘客身份证号码,列车编号,出发站编号,到达站编号,车厢号,座位编号,订单创建时间,订单状态,开车时间)

    咨询的分析方法gl.ppt

    咨询的分析方法gl.ppt

    node-v10.14.0-linux-ppc64le.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    2019年电赛无人机题目(B题)OpenMV相关代码

    These're the OpenMV codes written by microPython in 2019 NUEDC. 2019年电赛无人机题目(B题)OpenMV相关代码(原创).zip

    无人机降落TRT版本.zip

    无人机最强算法源码,易于部署和学习交流使用

    熊出没.zip

    熊出没.zip

    基于SpringBoot和Vue的家教信息平台设计与实现.zip

    基于SpringBoot和Vue的家教信息平台设计与实现.zip 有完整的部署指导文档,源码也是完整的,可以直接运行,里面包含了所有的相关步骤。 本文旨在设计和实现一套基于Java技术的家教信息系统,采用Spring Boot框架构建后端服务,MySQL数据库存储数据,Vue.js作为前端框架实现用户界面。该系统旨在解决家教信息管理的问题,包括家教师资信息管理、用户信息管理以及家教入驻等功能。通过综合运用Java、Spring Boot、MySQL和Vue等技术,实现了系统的高效运行和良好的用户体验。系统提供了用户注册、登录、信息查看和编辑等功能,同时支持家教的发布和查看,用户信息的管理以及家教审核的后台管理。家长可以方便地寻找合适的家教老师,家教老师也能够更便捷地管理自己的信息和相关资料。通过本设计,展示了Java技术在现代化家教信息系统中的应用,为家教行业的信息化管理提供了一种有效的解决方案。该系统的设计与实现将为家长、家教老师和用户提供便利,促进家教行业的发展与进步。 关键词:SpringBoot; MySQL; 系统设计; 家教

    利用CNN进行无人售货机的商品识别.zip

    无人机最强算法源码,易于部署和学习交流使用

    node-v11.10.1-linux-armv6l.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    (R语言)-6-箱线图的绘制

    (R语言)-6-箱线图的绘制

    麦肯锡-xx联通固定市场举措gl.ppt

    麦肯锡-xx联通固定市场举措gl.ppt

    在PyCharm中配置Python环境步骤

    附件是在PyCharm中配置Python环境步骤,文件绿色安全,请大家放心下载,仅供交流学习使用,无任何商业目的!

    【北京工业大学】集成电路分析与设计实验报告

    本课程实验分为数字集成电路设计实验与全定制设计实验两部分。 实验1—4为基于Cadence的数字集成电路设计实验部分,主要内容为通过一个简单数字低通滤波器的设计、综合、仿真,让学生熟悉数字集成电路前段实际设计流程,以培养学生实际设计集成电路的能力。具体为:实验1Matlab实现数字低通滤波器算法设计。 实验2Linux环境下基本操作。 实验3RTLCompiler对数字低通滤波器电路的综合。 实验4NC对数字低通滤波器电路的仿真。 其中,实验1主要目的是为了展示算法分析的方法和重要性。使用Matlab实现数字滤波器的算法设计和HDL代码生成。由于Matlab工具可以在Windows环境下工作,而其他集成电路EDA工具均需要在linux下工作,故建议本实验在课堂演示和讲述,学生课下练习。实验2的主要目的是学习linux下的基本操作。包括目录管理、文件管理、文件编辑以及文件压缩等在使用集成电路EDA工具时所需要的操作。本实验是实验3和实验4的基础,建议在实验室完成。

    基于Transformer模型构建的聊天机器人python源码+运行说明.zip

    一、简介 基于Transformer模型构建的聊天机器人,可实现日常聊天。 二、系统说明 2.1 功能介绍 使用者输入文本后,系统可根据文本做出相应的回答。 2.2 数据介绍 * 百度中文问答 WebQA数据集 * 青云数据集 * 豆瓣数据集 * chatterbot数据集 由于数据集过大,因此不会上传,如有需要可以在issue中提出。 2.3. 模型介绍(v1.0版本) 基于Transformer模型,使用Python中的keras-transformer包。 训练的参数文件没有上传,如有需要可在issue中提出。 三、注意事项 * keras-transformer包需要自行安装:`pip install keras-transformer`。 * 如果需要实际运行,参数文件放在`ModelTrainedParameters`文件下;`ListData`文件下包含了已经处理好的字典等数据,不需要修改,直接运行Main.py即可。 * 如果需要自行训练,将数据集文件放在`DataSet`文件下。 * `HyperParameters.py`文件中包含了系统所需

Global site tag (gtag.js) - Google Analytics