每次掉一个马克笔
Drop One Marker at time
我正在使用谷歌地图Api v3,我试图在我的地图上一次放下一个标记,就像谷歌演示一样,但我无法让它工作,这是我的代码,所有标记都在同一时间放下。
var map;
var markers = [];
function initialize() {
var latlng = new google.maps.LatLng(52.520816, 13.410186);
var options = {
zoom: 5,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById("map-canvas"), options);
}
initialize();
function loadMarkers() {
$.ajax({
url: 'js/poi.php',
type: 'GET',
dataType : "json",
success: function (data) {
var latlngbounds = new google.maps.LatLngBounds();
$.each(data, function(index, point) {
var marker = new google.maps.Marker({
position: new google.maps.LatLng(point.Lat, point.Lng),
animation: google.maps.Animation.DROP,
icon: 'img/marker.png'
});
markers.push(marker);
latlngbounds.extend(marker.position);
});
var markerCluster = new MarkerClusterer(map, markers);
map.fitBounds(latlngbounds);
}
});
}
loadMarkers();
我试着在每个标记上使用超时,但我猜loadMarkers();总是会立刻把它们放下来……
setTimeout(function() {
var marker = new google.maps.Marker({
position: new google.maps.LatLng(point.Lat, point.Lng),
animation: google.maps.Animation.DROP,
icon: 'img/marker.png'
});
}, point.Id * 200);
有什么建议吗?
编辑: point .php文件列出所有点从我的表和输出它们像这样:
[
{"Id":"1","Lat":"52.511467","Lgn":"13.447179"},
{"Id":"2","Lat":"52.549061","Lgn":"13.422975"},
{"Id":"3","Lat":"52.497622","Lgn":"13.396110"},
{"Id":"4","Lat":"52.517683","Lgn":"13.394393"}
]
- 在添加到地图时将标记添加到集群
- 调整边界以显示添加的标记
- 修复了JSON中的错字(不知道这是否是一个问题)
function initialize() {
var latlng = new google.maps.LatLng(52.520816, 13.410186);
var options = {
zoom: 5,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById("map-canvas"), options);
loadMarkers();
}
function loadMarkers() {
$.ajax({
type: 'POST',
dataType: 'json',
url: '/echo/json/',
data: {
json: JSON.stringify(jsonData)
},
delay: 3,
success: function (data) {
var markerCluster = new MarkerClusterer(map, markers);
var latlngbounds = new google.maps.LatLngBounds();
$.each(data, function (index, point) {
setTimeout(function() {
var marker = new google.maps.Marker({
position: new google.maps.LatLng(point.Lat, point.Lng),
animation: google.maps.Animation.DROP,
map: map /* don't have your custom marker
icon: 'img/marker.png'*/
});
markerCluster.addMarker(marker);
markers.push(marker);
// adjust the bounds to show all the markers
latlngbounds.extend(marker.getPosition());
map.fitBounds(latlngbounds);
}, point.Id * 200);
});
}
});
}
工作小提琴首先使用以下值创建标记:
var marker = new google.maps.Marker({
position: new google.maps.LatLng(point.Lat, point.Lng),
map: null,
visible:false
});
设置一个用于超时计数器的变量,并在地图缩放发生变化(强制重新集群)时始终重置该变量
google.maps.event.addListener(map,'zoom_changed',function(){
this.set('counter',0);
})
观察标记的map_changed
-事件,当先前的群集标记从群集中移除时应用动画
google.maps.event.addListener(marker,'map_changed',function(){
var marker=this,map=this.getMap();
//the marker has been clustered
if(!this.getMap()){
this.setValues({visible:false});
}
//the marker is not a part of a cluster
else{
//the marker has been clustered before, set visible and animation with a delay
if(!this.getVisible()){
var counter=this.getMap().get('counter')+1;
//set the new counter-value
this.getMap().set('counter',counter);
setTimeout(function(){marker.setValues({animation:google.maps.Animation.DROP,
visible:true});},
200*counter)
}
}
});
结果: http://jsfiddle.net/doktormolle/9jaLqpfd/
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- jQuery:循环一个具有不同超时值的循环
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 从javascript创建一个列表
- 节点导出返回一个空对象
- 使用clickToggle并在单击另一个元素时关闭元素
- 我可以在json对象中添加一个函数吗
- 使用javascript将动态表从一个html页面打印到另一个html页
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- 表追加而不附加最后一个元素
- 我如何找到一个句子中的所有空格并替换忽略它们
- D3在一个调用中绘制不同的SVG形状,没有可见性
- 如何在android中使用phonegap将文件从一个文件夹移动/复制到另一个文件夹
- 使用类从一个标记中双击事件
- Javascript,访问一个主要对象模块模式中的每个对象
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 如何在elfinder插件(一个文件管理器插件)上获得上传前事件
- 我应该如何从xml文件构建一个javascript页面
- Regex代码只允许一个空格
- 每次掉一个马克笔