San*_*are 2 jquery google-maps
我在我的网页上集成了带有标记动画的地图.我在地图中有多个标记.我希望实现类似的功能,当点击任何标记时,其他标记的动画应停止当前正在运行的动画.
目前,我可以在标记点击上停止相同标记的动画.在多个标记的情况下,我必须得到一些标记对象.
到目前为止我已经这样做了.
latlngarray是一种具有对象格式的格度和经度的数组.
var centerlatlng={center lat lng are here};
var zoomlevel=zoomlevel is here;
function initMap(){
map = new google.maps.Map(document.getElementById('map'),{
center: centerlatlng,
zoom: zoomlevel
});
if(latlngarray.length > 0){
for(i=0; i < latlngarray.length; i++){
marker = new google.maps.Marker({
position: latlngarray[i],
map: map
});
marker.addListener('click', function(){
toggleBounce(this);
map.setZoom(10);
map.setCenter(marker.getPosition());
});
}
}}
function toggleBounce(ele){
if(ele.getAnimation() !== null){
ele.setAnimation(null);
}else{
ele.setAnimation(google.maps.Animation.BOUNCE);
}}
Run Code Online (Sandbox Code Playgroud)
创建一个包含所有标记引用的数组,遍历该数组,取消所有标记上的动画,然后在单击的标记上设置动画.
marker.addListener('click', function() {
for (var i = 0; i < markers.length; i++) {
markers[i].setAnimation(null);
}
toggleBounce(this);
map.setZoom(10);
map.setCenter(marker.getPosition());
});
Run Code Online (Sandbox Code Playgroud)
代码段:
var map;
var centerlatlng = {
lat: 37.4419,
lng: -122.1419
};
var zoomlevel = 13;
var latlngarray = [{lat: 37.4418834, lng: -122.1430195}, // Palo Alto, CA, USA
{lat: 37.4688273, lng: -122.1410751}, //East Palo Alto, CA, USA
{lat: 37.424106, lng: -122.1660756}, // Stanford, CA, USA
{lat: 37.4529598, lng: -122.1817252} // Menlo Park, CA, USA
];
function initMap() {
var markers = [];
map = new google.maps.Map(document.getElementById('map'), {
center: centerlatlng,
zoom: zoomlevel
});
if (latlngarray.length > 0) {
for (i = 0; i < latlngarray.length; i++) {
var marker = new google.maps.Marker({
position: latlngarray[i],
map: map
});
markers.push(marker);
marker.addListener('click', function() {
for (var i = 0; i < markers.length; i++) {
markers[i].setAnimation(null);
}
toggleBounce(this);
map.setZoom(10);
map.setCenter(marker.getPosition());
});
}
}
}
function toggleBounce(ele) {
if (ele.getAnimation() !== null) {
ele.setAnimation(null);
} else {
ele.setAnimation(google.maps.Animation.BOUNCE);
}
}
google.maps.event.addDomListener(window, "load", initMap);
Run Code Online (Sandbox Code Playgroud)
html,
body,
#map {
height: 100%;
width: 100%;
margin: 0px;
padding: 0px
}
Run Code Online (Sandbox Code Playgroud)
<script src="https://maps.googleapis.com/maps/api/js"></script>
<div id="map"></div>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2739 次 |
最近记录: |