我有一个地图应用程序,并且我有在 document.ready() 时加载的标记,当我单击按钮时,我还有其他一些标记,但是当我单击按钮时,标记添加到文档中。ready() 迷路了。
单击按钮时,整个页面将被提交并重新绘制。这也导致我的地图在缩放和滚动时移动非常缓慢。有人可以帮忙。下面是我的代码。我想让页面运行得更快,我不想在每个 ajax 请求上都重新绘制它。
代码
<script type="text/javascript">
function initialize() {
var mapOptions = {
center: new google.maps.LatLng(10.670044,-61.515305),
zoom: 16,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("map_canvas"),mapOptions);
var criminal = new google.maps.MarkerImage('resources/icons/police_new.ico',
new google.maps.Size(100,106),
new google.maps.Point(0,0),
new google.maps.Point(50,50)
);
var companyPos = new google.maps.LatLng(10.670044,-61.515305);
var companyMarker = new google.maps.Marker({
position: companyPos,
map: map,
icon: criminal,
title:"First Criminal"
});
$.ajax({
type:'GET',
async:false,
global:'false',
url:'getListOfCrimeHotSpot.htm',
headers : {Accept: 'application/json'},
dataType: 'json'
}).done(function(hotspot){
$.each(hotspot, function(i,h){
var icon = 'resources/icons/information.ico';
new google.maps.Marker({
position:new google.maps.LatLng(h.lat,h.lng),
map:map,
icon: new google.maps.MarkerImage(icon, new google.maps.Size(100, 106), new google.maps.Point(0, 0), new google.maps.Point(50, 50)),
title: 'Crime Rating : ' + h.crimeLevel+' @ ' +h.crimeLevelCount+' / ' + h.totalNumberOfCrimes
});
});
});
return map;
}//end initialize
var global_citizens;
$(document).ready(function(){
map = initialize();
$('#startTracking').on('click',function(){
$.each(global_citizens, function(i, c) {
console.log(c.name );
});
});
$('#getCitizens').on('click', function() {
/*var mapOptions = {
center: new google.maps.LatLng(10.670044, -61.515305),
zoom: 16,
mapTypeId: google.maps.MapTypeId.ROADMAP
};*/
//map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
$.ajax({
type: 'GET',
async : false,
global: 'false',
url: 'getListOfMarkers.htm',
headers : {Accept: 'application/json'},
dataType: 'json'
}).done(function(citizens) {
global_citizens = citizens;
var markerSource = [
null,
null,
'resources/icons/criminal_new.ico',
'resources/icons/victim_new.ico',
'resources/icons/suspect_new.ico'
];
$.each(citizens, function(i, c) {
//console.log(c.name + ' | ' + c.socialSecurityNumber + ' | ' + c.lat+ ' | ' +c.lng);
var icon = markerSource[c.citizenType];
if(markerSource) {
new google.maps.Marker({
position: new google.maps.LatLng(c.lat, c.lng),
map: map,
icon: new google.maps.MarkerImage( icon, new google.maps.Size(100, 106), new google.maps.Point(0, 0), new google.maps.Point(50, 50) ),
title: c.name +'-' +c.socialSecurityNumber
});
}
});
});
});
});
</script>
html
<body onload="initialize()">
<div id="map_canvas" style="width:100%; height:90%">
<!-- MAP GOES IN HERE -->
</div>
<div id="toolbar">
<button class="btn" id="getCitizens" onclick="" type="button">Get Citizens</button>
<button class="btn" id="startTracking" onclick="" type="button">Start Tracking</button>
</div>
</body>