热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【百度地图API】百度API卫星图使用方法和卫星图对比工具

百度地图API推出卫星图接口也有一个月啦~本文除了介绍如何使用百度地图API来操作卫星图外,还顺带制作了个卫星图对比工具。一、百度地图API卫星图调用百度卫星图有两种

百度地图API推出卫星图接口也有一个月啦~  

本文除了介绍如何使用百度地图API来操作卫星图外,还顺带制作了个卫星图对比工具。

 

一、百度地图API卫星图

调用百度卫星图有两种方式,一是地图类型控件,一是地图底图设置。下面分别介绍这两种方法:

 

1、利用控件

使用控件有一大优势,就是地图类型控件上,有百度全部的地图类型,比如二维、三维、卫星等。

而且,只需要一句话,就能简单加上这个控件。

map.addControl(new BMap.MapTypeControl()); //添加地图类型控件

 

看到下图中,右上角那个控件了麽?这个就是地图类型控件啦~

添加她只需一句话,很简单吧。

 

全部源代码:

DOCTYPE html>
<html>
<head>
<meta http-equiv&#61;"Content-Type" content&#61;"text/html; charset&#61;gb2312" />
<title>地图类型控件title>
<script type&#61;"text/Javascript" src&#61;"http://api.map.baidu.com/api?v&#61;1.2">script>
head>
<body>
<div style&#61;"width:520px;height:340px;border:1px solid gray" id&#61;"container">div>
body>
html>
<script type&#61;"text/Javascript">
var map &#61; new BMap.Map("container"); // 创建Map实例
var point &#61; new BMap.Point(116.4035,39.915);map.setCurrentCity("北京"); // 设置地图显示的城市 此项是必须设置的,因为要使用三维图
map.centerAndZoom(point,15); // 初始化地图,设置中心点坐标和地图级别。

map.addControl(
new BMap.MapTypeControl()); //添加地图类型控件
script>

 

 

 

更多关于地图类型控件的知识&#xff1a;&#xff08;初学者可不看&#xff0c;上面的代码已经足够用啦~&#xff09;


MapTypeControl是负责切换地图类型的控件&#xff0c;此类继承Control所有功能。


MapTypeControlOptions表示MapTypeControl构造函数的可选参数。它没有构造函数&#xff0c;但可通过对象字面量形式表示&#xff08;自 1.2 新增&#xff09;。

 

MapTypeControlType常量表示MapTypeControl的外观样式&#xff08;自 1.2 新增&#xff09;。

 

 

 


下面来看看第二种方法。如果你只需要卫星图&#xff0c;不需要别的地图类型&#xff0c;你就需要下面这种方法了。同样相当简单&#xff0c;也是一句话就搞定的事情~

2、修改地图底图默认设置

var map &#61; new BMap.Map("container",{mapType: BMAP_HYBRID_MAP}); //设置卫星图为底图



 

 

二、卫星图对比工具

先来看图。下图中&#xff0c;左边是百度的卫星图&#xff0c;右边是谷歌的卫星图。

大家可以看到&#xff0c;无论是颜色&#xff0c;还是街道数据&#xff0c;都有明显的不同。

当然&#xff0c;如果你学会这些代码&#xff0c;你还可以将其他家API的卫星图拿来对比呀~~

 

对比工具主要是有以下功能&#xff1a;

1、同时展示百度和谷歌的卫星图

// 百度卫星图底图
var bdMap &#61; new BMap.Map("mapBaidu",{mapType: BMAP_HYBRID_MAP});


//谷歌卫星图底图
var ggMap &#61; new google.maps.Map(document.getElementById("mapGoogle"),{mapTypeId: google.maps.MapTypeId.SATELLITE});



2、拖动谷歌地图&#xff0c;百度地图跟着动&#xff08;联动效果&#xff09;

给谷歌地图添加拖拽事件&#xff0c;同理&#xff0c;也可以给百度地图添加。

在这里取了近似值&#xff0c;没有使用坐标转换工具。如果使用的话&#xff0c;应该会更加准确的。&#xff08;搜索线性转换&#xff0c;或者直接看源代码&#xff09;

google.maps.event.addListener(ggMap, &#39;dragend&#39;, function() {
blng &#61; ggMap.center.lng() &#43; 0.0065;
blat &#61; ggMap.center.lat() &#43; 0.0060;
bdMap.panTo(new BMap.Point(blng,blat));
});



3、放大缩小谷歌地图&#xff0c;百度地图也跟着放大和缩小

原理同上。谷歌的地图级别比百度小&#xff0c;所以要找一个地图级别的对应关系。大概是

google.maps.event.addListener(ggMap, &#39;zoom_changed&#39;, function() {
bdMap.setZoom(ggMap.zoom&#43;1);
});

 

 

 

全部源代码&#xff1a;

DOCTYPE html>
<html>
<head>
<meta name&#61;"viewport" content&#61;"initial-scale&#61;1.0, user-scalable&#61;no" />
<meta http-equiv&#61;"content-type" content&#61;"text/html; charset&#61;UTF-8"/>
<title>Google Map VS Baidu Maptitle>
<link href&#61;"http://code.google.com/apis/maps/documentation/Javascript/examples/default.css" rel&#61;"stylesheet" type&#61;"text/css" />
<script type&#61;"text/Javascript" src&#61;"http://maps.googleapis.com/maps/api/js?sensor&#61;false">script>
<script type&#61;"text/Javascript" src&#61;"http://api.map.baidu.com/api?v&#61;1.2">script>
<script type&#61;"text/Javascript">
function initialize() {
var blng;
var blat;
var myOptions &#61; {
zoom:
14,
center:
new google.maps.LatLng(39.90564219683827,116.39948),
panControl:
false,
zoomControl:
false,
scaleControl:
false,
mapTypeId: google.maps.MapTypeId.SATELLITE
}
var ggMap &#61; new google.maps.Map(document.getElementById("mapGoogle"),myOptions);

google.maps.event.addListener(ggMap,
&#39;dragend&#39;, function() {
blng
&#61; ggMap.center.lng() &#43; 0.0065;
blat
&#61; ggMap.center.lat() &#43; 0.0060;
bdMap.panTo(
new BMap.Point(blng,blat));
});
google.maps.event.addListener(ggMap,
&#39;zoom_changed&#39;, function() {
bdMap.setZoom(ggMap.zoom
&#43;1);
});
}
script>
head>
<body onload&#61;"initialize()" style&#61;"width:100%;height:100%;">
<div id&#61;"mapBaidu" style&#61;"width:50%;height:100%;float:left;">
<script type&#61;"text/Javascript">
var bdMap &#61; new BMap.Map("mapBaidu",{mapType: BMAP_HYBRID_MAP}); // 创建Map实例
       var point &#61; new BMap.Point(116.4035,39.915);map.setCurrentCity("北京"); // 设置地图显示的城市 此项是必须设置的,因为要使用三维图

bdMap.centerAndZoom(point,
15); // 初始化地图,设置中心点坐标和地图级别。
bdMap.addControl(new BMap.MapTypeControl()); //添加卫星图控件
bdMap.enableScrollWheelZoom();
script>
div>
<div id&#61;"mapGoogle" style&#61;"width:50%;height:100%;float:left;">div>
body>
<script type&#61;"text/Javascript">



script>
html>




转载于:https://www.cnblogs.com/milkmap/archive/2011/12/01/2270970.html


推荐阅读
  • 前端技术分享——利用Canvas绘制鼠标轨迹
    作为一名前端开发者,我已经积累了Vue、React、正则表达式、算法以及小程序等方面的技能,但Canvas一直是我的盲区。因此,我在2018年为自己设定了一个新的学习目标:掌握Canvas,特别是如何使用它来创建CSS3难以实现的动态效果。 ... [详细]
  • 本文详细介绍了如何处理Oracle数据库中的ORA-00227错误,即控制文件中检测到损坏块的问题,并提供了具体的解决方案。 ... [详细]
  • 本文详细介绍了在PHP中如何获取和处理HTTP头部信息,包括通过cURL获取请求头信息、使用header函数发送响应头以及获取客户端HTTP头部的方法。同时,还探讨了PHP中$_SERVER变量的使用,以获取客户端和服务器的相关信息。 ... [详细]
  • 使用jQuery与百度地图API实现地址转经纬度功能
    本文详细介绍了如何利用jQuery和百度地图API将地址转换为经纬度,包括申请API密钥、页面构建及核心代码实现。 ... [详细]
  • 使用 ModelAttribute 实现页面数据自动填充
    本文介绍了如何利用 Spring MVC 中的 ModelAttribute 注解,在页面跳转后自动填充表单数据。主要探讨了两种实现方法及其背后的原理。 ... [详细]
  • 本文详细介绍了Oracle RMAN中的增量备份机制,重点解析了差异增量和累积增量备份的概念及其在不同Oracle版本中的实现。通过对比两种备份方式的特点,帮助读者选择合适的备份策略。 ... [详细]
  • 深入解析mt_allocator内存分配器(二):多线程与单线程场景下的实现
    本文详细介绍了mt_allocator内存分配器在多线程和单线程环境下的实现机制。该分配器以2的幂次方字节为单位分配内存,支持灵活的配置和高效的性能。文章分为内存池特性描述、内存池实现、单线程内存池实现、内存池策略类实现及多线程内存池实现等部分,深入探讨了内存池的初始化、内存分配与回收的具体实现。 ... [详细]
  • 本文介绍了两个重要的Node.js库——cache-content-type和mime-types,它们在处理HTTP响应头时非常有用。cache-content-type是基于mime-types构建的,并且实现了缓存机制以提高性能。 ... [详细]
  • 本文介绍了一个基本的同步Socket程序,演示了如何实现客户端与服务器之间的简单消息传递。此外,文章还概述了Socket的基本工作流程,并计划在未来探讨同步与异步Socket的区别。 ... [详细]
  • 基于51单片机的多项目设计实现与优化
    本文探讨了基于51单片机的多个项目的设计与实现,包括PID控制算法的开关电源设计、八音电子琴仿真设计、智能抽奖系统控制设计及停车场车位管理系统设计。每个项目均采用先进的控制技术和算法,旨在提升系统的效率、稳定性和用户体验。 ... [详细]
  • 本文探讨了在Go语言中处理切片并发修改时如何有效避免竞争条件的方法。 ... [详细]
  • 本文详细介绍了跨站脚本攻击(XSS)的基本概念、工作原理,并通过实际案例演示如何构建XSS漏洞的测试环境,以及探讨了XSS攻击的不同形式和防御策略。 ... [详细]
  • 本文探讨了在 PHP 的 Zend 框架下,使用 PHPUnit 进行单元测试时遇到的 Zend_Controller_Response_Exception 错误,并提供了解决方案。 ... [详细]
  • 来自FallDream的博客,未经允许,请勿转载,谢谢。一天一套noi简直了.昨天勉强做完了noi2011今天教练又丢出来一套noi ... [详细]
  • 本文详细介绍了在MyBatis框架中如何通过#和$两种方式来传递SQL查询参数。使用#方式可以提高执行效率,而使用$则有助于在复杂SQL语句中更好地查看日志。此外,文章还探讨了不同场景下的参数传递方法,包括实体对象、基本数据类型以及混合参数的使用。 ... [详细]
author-avatar
阳光无限好1981
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有