搜索
首页web前端html教程基于CSS和JavaScript创建动画式谷歌地图标记_html/css_WEB-ITnose

一、 简介

谷歌地图API允许web开发人员仅仅使用几行代码就可以通过其神奇的内置功能创建卓越的用户体验。然而,它也存在一个明显的不足——在映射标记方面缺乏灵活性和创造性。

当然,你可以添加自定义标记图像、工具提示和相应的标签,但所有这些都是静态的、以面向文本的方式进行交互。此外,并不存在某种标准的方法来创建响应用户操作的交互式标记。

我简直不满足于此,所以着手寻找一种创建真正独特的映射方法。

本文正是想向你展示这种真正独特的标记映射方法。具体地说,我要向各位展示如何使用CSS3动画技术来标记地图。基于此技术,你可以让标记跳舞、扭动和隐藏,直至其能够以优雅的方式跳出荧屏。

如果用户悬停在标记上,单击它或在地图外使用切换,你将能够使用任何CSS动画使其“复活”。本文将向你介绍一种简单的策略,你可以在你的任何项目中使用这种动画标记。作为你的比较参考,另外两个例子——Ryan Connolly(http://jsfiddle.net/ryanoc/86Ejf/)和Felipe Figueroa(http://bl.ocks.org/amenadiel/f4e5bd78b214ff081254)都使用了类似于此的方法。

二、基础知识

你仅需要使用下面介绍的几个步骤即可为你地图上的标记添加CSS动画效果支持。

(一) 第一步

在你的标记上添加一幅图像。下面是你指定图像的代码方式:

var catIcon = {      url: myImageURLhere,      //state your size parameters in terms of pixels      size: new google.maps.Size(70, 60),      scaledSize: new google.maps.Size(70, 60),      origin: new google.maps.Point(0,0)  } 

(二) 第二步

在标记声明中把参数optimized设置为false。这可以让你把每一个标记渲染为一个独立的DOM元素:

var marker = new google.maps.Marker({      position:latLng,      map: map,      // set the icon as catIcon declared above      icon: catIcon,      // must use optimized false for CSS      optimized: false  }); 

(三) 第三步

创建一个overlayView对象,它负责把所有标记组织到一个面板中,然后你可以从DOM中访问这个overlayView对象。请参考下面的代码:

var myoverlay = new google.maps.OverlayView();      myoverlay.draw = function () {          this.getPanes().markerLayer.id='markerLayer';      };  myoverlay.setMap(map); 

在上面代码调用getPanes()函数一行中,我们给标记层指定了一个id,这样就可以在CSS中使用它。这个overlayView对象将自动收集不在另一个图层中的任何标记。当然,在本例中,并没有提供其他层,因此此对象收集的是所有标记。

(四) 第四步

现在,我们使用CSS技术来实现把当前层中的所有标记添加动画效果。这种动画效果可以是只发生一次的,也可以是继续不断地发生的。请参考下面代码:

#markerLayer img {    animation: pulse .5s infinite alternate;    -webkit-animation: pulse .5s infinite alternate;    transform-origin: center;    -webkit-transform-origin: center;  } 

三、更加灵活的设置

使用上面的步骤会让你立即将动画添加到所有标记上。在本节中,我们再来学习另外几个选项来更好地控制动画标记。

(一) 外部切换

比如说,你想要包括一个图例或一些可点击的切换按钮,以便用户可以显示和隐藏不同的图层,或想使标记具有某种特征从而更改其相应的CSS动画。所有这些想法都是很容易实现的!你只需使用一个jQuery.click()处理器函数即可,请参考如下代码片断:

$('.btn').click(function(){     $('#markerLayer img').css('animation', 'myAnimationOptionsHere');     $('#markerLayer img').css('-webkit-animation', 'myAnimationOptionsHere')  }) 

(二)创建click/hover事件

当用户将鼠标悬停在一个标记或单击它时想要添加一个简短的动画吗?那也不难。首先,创建一个全局数组来存储所有的标记:

var allMarkers=[];

然后,当你声明每一个标记时,添加一个title属性并把它转换为字符串类型:

var marker = new google.maps.Marker({      position:latLng,      map: map,      icon: catIcon,      optimized: false,      title: allMarkers.length.toString()  }); 

接下来,添加一个依赖于数组长度的title属性,从而为每一个标记创建一个独一无二的id。最后,使用如下代码把标记添加到数组中:

allMarkers.push(marker); 

最后,我们来看一下click和hover事件的实现代码。注意:我们通过使用单个标题标识符来标识每个标记:

google.maps.event.addListener(marker, 'click', function() {    var thisTitle= Number(this.title);    $('#markerLayer img').eq(thisTitle).css()...  })  google.maps.event.addListener(marker, 'mouseover/mouseout', function() {    var thisTitle= Number(this.title);    $('#markerLayer img').eq(thisTitle).css()...  }) 

(三) 针对不同标记使用不同动画效果

我们不妨考虑把两个单独的标记类型添加到一张地图中的情形:棒球场地和足球场地。因为两者都自动包括在你创建的覆盖层,你需要通过某种方法实现把独立的动画效果应用于不同的标记。这是很容易做到的!只需要在你的CSS中使用src属性并使用各自标记对应的图像URL来匹配就可以了。请参考下面代码:

#markerLayer img[src='/img/myURLpath'] {      animation: pulse .5s infinite alternate;      -webkit-animation: pulse .5s infinite alternate;      transform-origin: center;      -webkit-transform-origin: center;  } 

四、小结

作为一名开发人员或设计师,你的主要工作是开发出您的用户喜欢的产品。事实上,他们已经在正使用的产品中见过很多的谷歌地图应用。现在,由你来满足他们的更热切的期望吧!

最后,提供几种使用地图标记动画来满足您的用户需求的途径:

l 如果你拥有模拟实际事物(如猫)的标记图像,那么,你可以使用一个对应的CSS动画来模拟自然的运动。

l 如果你的地图标记图像并非实际移动的物体(例如柜台),那么你可以使用CSS动画效果来模仿当点击它们时这些图像表现得很兴奋,例如跳跃或者打颤的动画效果。

l 如果你拥有对应于每个标记的数据,那么你可以使标记相应于这些数据作出反应。例如,你可以标记出交通繁忙的十字路口:你可以把一个闪烁的感叹号放在这些地方。

试试看吧,努力坚持下去,你的用户群肯定会纷至沓来!

原文标题: Creating Animated Google Map Markers with CSS and JavaScript

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
超越HTML:网络开发的基本技术超越HTML:网络开发的基本技术Apr 26, 2025 am 12:04 AM

要构建一个功能强大且用户体验良好的网站,仅靠HTML是不够的,还需要以下技术:JavaScript赋予网页动态和交互性,通过操作DOM实现实时变化。CSS负责网页的样式和布局,提升美观度和用户体验。现代框架和库如React、Vue.js和Angular,提高开发效率和代码组织结构。

HTML中的布尔属性是什么?举一些例子。HTML中的布尔属性是什么?举一些例子。Apr 25, 2025 am 12:01 AM

布尔属性是HTML中的特殊属性,不需要值即可激活。1.布尔属性通过存在与否控制元素行为,如disabled禁用输入框。2.它们的工作原理是浏览器解析时根据属性的存在改变元素行为。3.基本用法是直接添加属性,高级用法可通过JavaScript动态控制。4.常见错误是误以为需要设置值,正确写法应简洁。5.最佳实践是保持代码简洁,合理使用布尔属性以优化网页性能和用户体验。

如何验证您的HTML代码?如何验证您的HTML代码?Apr 24, 2025 am 12:04 AM

HTML代码可以通过在线验证器、集成工具和自动化流程来确保其清洁度。1)使用W3CMarkupValidationService在线验证HTML代码。2)在VisualStudioCode中安装并配置HTMLHint扩展进行实时验证。3)利用HTMLTidy在构建流程中自动验证和清理HTML文件。

HTML与CSS和JavaScript:比较Web技术HTML与CSS和JavaScript:比较Web技术Apr 23, 2025 am 12:05 AM

HTML、CSS和JavaScript是构建现代网页的核心技术:1.HTML定义网页结构,2.CSS负责网页外观,3.JavaScript提供网页动态和交互性,它们共同作用,打造出用户体验良好的网站。

HTML作为标记语言:其功能和目的HTML作为标记语言:其功能和目的Apr 22, 2025 am 12:02 AM

HTML的功能是定义网页的结构和内容,其目的在于提供一种标准化的方式来展示信息。1)HTML通过标签和属性组织网页的各个部分,如标题和段落。2)它支持内容与表现分离,提升维护效率。3)HTML具有可扩展性,允许自定义标签增强SEO。

HTML,CSS和JavaScript的未来:网络开发趋势HTML,CSS和JavaScript的未来:网络开发趋势Apr 19, 2025 am 12:02 AM

HTML的未来趋势是语义化和Web组件,CSS的未来趋势是CSS-in-JS和CSSHoudini,JavaScript的未来趋势是WebAssembly和Serverless。1.HTML的语义化提高可访问性和SEO效果,Web组件提升开发效率但需注意浏览器兼容性。2.CSS-in-JS增强样式管理灵活性但可能增大文件体积,CSSHoudini允许直接操作CSS渲染。3.WebAssembly优化浏览器应用性能但学习曲线陡,Serverless简化开发但需优化冷启动问题。

HTML:结构,CSS:样式,JavaScript:行为HTML:结构,CSS:样式,JavaScript:行为Apr 18, 2025 am 12:09 AM

HTML、CSS和JavaScript在Web开发中的作用分别是:1.HTML定义网页结构,2.CSS控制网页样式,3.JavaScript添加动态行为。它们共同构建了现代网站的框架、美观和交互性。

HTML的未来:网络设计的发展和趋势HTML的未来:网络设计的发展和趋势Apr 17, 2025 am 12:12 AM

HTML的未来充满了无限可能。1)新功能和标准将包括更多的语义化标签和WebComponents的普及。2)网页设计趋势将继续向响应式和无障碍设计发展。3)性能优化将通过响应式图片加载和延迟加载技术提升用户体验。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中