如何使用javascript检查变量是否在内存中
当我放大地图看不到它们时,我想检查标记(谷歌地图v3)是否在内存中如何使用javascript检查变量是否在内存中,javascript,google-maps,memory,google-maps-markers,Javascript,Google Maps,Memory,Google Maps Markers,当我放大地图看不到它们时,我想检查标记(谷歌地图v3)是否在内存中 那么我能做什么呢?您需要跟踪添加到数组中地图的标记。您需要添加一个bounds_changed事件侦听器,该侦听器具有一个搜索该数组并检查标记坐标是否在地图边界内的函数。例如: <html> <head> <script type="text/javascript" src= "http://maps.google.com/maps/api/js?sensor=false"&
那么我能做什么呢?您需要跟踪添加到数组中地图的标记。您需要添加一个bounds_changed事件侦听器,该侦听器具有一个搜索该数组并检查标记坐标是否在地图边界内的函数。例如:
<html>
<head>
<script type="text/javascript" src= "http://maps.google.com/maps/api/js?sensor=false">
</script>
<script>
var map;
markers = [];
function initialize(){
geocoder = new google.maps.Geocoder();
var latlng = new google.maps.LatLng(-34.397, 150.644);
var myOptions = {
zoom: 8,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
//if creating multiple markers you would do marker creation and storage in a loop
var marker1 = new google.maps.Marker({
map: map,
position: latlng,
title: "Marker 1"
});
var marker2 = new google.maps.Marker({
map: map,
position: new google.maps.LatLng(-34.2, 150.644),
title: "Marker 2"
});
//save your marker to an array to keep track of your markers - i am assuming all markers are initially visible
markers.push({
visible: true,
marker: marker1
})
markers.push({
visible: true,
marker: marker2
})
//watch for zoom change event
google.maps.event.addListener(map, 'bounds_changed', function(){
checkBounds()
})
}
function checkBounds(){
//get bounds for a new zoom level
bounds = map.getBounds();
//loop through markers array to check if they are still in bounds (visible)
for (i = 0; i < markers.length; i++) {
m = markers[i].marker
if (bounds.contains(m.position)) {
//do something here for markers that are visible
markers[i].visible = true;
}
else {
//do something here for markers that are not visible
markers[i].visible = false;
}
}
}
//this is just to show which markers are visible and which ones are not
function show(){
htmlVisible = ""
htmlHidden = ""
for (i = 0; i < markers.length; i++) {
m = markers[i].marker
if (markers[i].visible) {
htmlVisible += m.title + "\n";
}
else {
htmlHidden += m.title + "\n";
}
}
alert("Visible markers:\n" + htmlVisible + "\n" + "Markers out of bounds:\n" + htmlHidden)
}
</script>
</head>
<body onload="initialize()">
<div id="map_canvas" style="width: 320px; height: 480px;">
</div>
<input type=button onclick="show()" value="List visible/out of bounds markers">
</body>
</html>
var映射;
标记=[];
函数初始化(){
geocoder=新的google.maps.geocoder();
var latlng=新的google.maps.latlng(-34.397150.644);
变量myOptions={
缩放:8,
中心:拉特林,
mapTypeId:google.maps.mapTypeId.ROADMAP
}
map=new google.maps.map(document.getElementById(“map_canvas”),myOptions);
//如果创建多个标记,您将在循环中创建和存储标记
var marker1=新的google.maps.Marker({
地图:地图,
位置:latlng,
标题:“标记1”
});
var marker2=新的google.maps.Marker({
地图:地图,
位置:新google.maps.LatLng(-34.2150.644),
标题:“标记2”
});
//将标记保存到数组以跟踪标记-我假设所有标记最初都可见
推({
可见:对,
马克:马克1
})
推({
可见:对,
标记器:标记器2
})
//观察缩放更改事件
google.maps.event.addListener(映射'bounds_changed',函数(){
checkBounds()
})
}
函数checkBounds(){
//获取新缩放级别的边界
bounds=map.getBounds();
//循环遍历标记数组以检查它们是否仍在边界内(可见)
对于(i=0;i