由于网页空闲(闲置可能是原因,Itz my Guess),因此在输入文本框中获取“NULL/Empty”值(我输入了值)。如果页面在一段时间内保持空闲状态,为输入文本获取“NULL/Empty”值?
我可以一一给出多个形状的名称。但是,如果我已持有5分钟的网页。然后,我无法第一次为多边形(在infowindow对象中)给出名称和描述。在第二次我可以给InfoWindow Object.But命名,但它没有自动关闭。我必须手动关闭它。请帮助我使用Google Maps API编写无错代码。
我已经做过的事情。在infoWindow Object的帮助下绘制多边形后,为每个多边形赋予一个名称和描述。代码如下。帮我找到我的代码中的错误,并帮助我确定我的糟糕实现的领域。
google.maps.visualRefresh = true;
var polygons = [];
var polygonShape = [];
var polygonJson = {};
var map;
var drawingTool = new google.maps.drawing.DrawingManager();
function initialize() {
map = new google.maps.Map(document.getElementById('map-canvas'), {
zoom : 4,
center : new google.maps.LatLng(37.5499, -95.5524),
mapTypeId : google.maps.MapTypeId.ROADMAP
});
drawingTool.setOptions({
drawingMode : google.maps.drawing.OverlayType.POLYGON,
drawingControl : true,
drawingControlOptions : {
position : google.maps.ControlPosition.TOP_CENTER,
drawingModes : [ google.maps.drawing.OverlayType.POLYGON ]
}
});
drawingTool.setMap(map);
google.maps.event.addListener(drawingTool, 'overlaycomplete', function(event) {
if (event.type == google.maps.drawing.OverlayType.POLYGON) {
createPolygon(event.overlay);
}
});
}
function createPolygon(polygon) {
polygons.push(polygon);
this.vertices = polygon.getPath();
var content = '<label><b>Region Name : </b></label><input type="text" size="20" id="region_name"/></br><label align="top"><b>Description : </b></label><textarea id="region_desc" cols="20" rows="3"></textarea><br/><input type="button" value="Save Region" onclick="get_point_info(vertices);"/><br/>'
+ '<b>-----INFO-----</b>';
verticesLoop(this.vertices, content);
}
function get_point_info(vertices) {
var vertice = vertices;
var RegionName = document.getElementById('region_name').value;
var RegionDesc = document.getElementById('region_desc').value;
this.infoWindow.close();
polygonJson = {
data : vertice,
regionName : RegionName,
regionDescription : RegionDesc
};
alert(Object.toJSON(polygonJson));
}
function verticesLoop(vertices, content) {
var clat = 0;
var clng = 0;
var contents = content;
var vert = vertices;
vert.forEach(function(xy, i) {
var contentString = '<br/><b>Lat :</b> ' + xy.lat() + '<b>Long : </b>'
+ xy.lng();
contents = contents + contentString;
clat = xy.lat();
clng = xy.lng();
});
displayInfo(contents, new google.maps.LatLng(clat, clng));
}
function displayInfo(conString, customPosition) {
this.infoWindow = new google.maps.InfoWindow({
content : conString,
position : customPosition,
maxWidth : 350
});
this.infoWindow.open(map);
}
google.maps.event.addDomListener(window, 'load', initialize);
ERRORS: 的值是在文本框中越来越无效(有时)两者,其通过触发信息窗口的文本框中。
Regards, ArunRaj。
Jurkovic:嘿,真的非常感谢您发现我的错误。但我觉得,禁用和启用绘图工具不是一个好的选择。这是做到这一点的唯一方法吗? – ArunRaj
它不仅是选项,而且最可能是最简单的一个。 如果绘制了另一个多边形,则一种选择是关闭先前的infowindow。但在这种情况下,您必须启用多边形上的单击事件才能再次打开infowindow,这将进一步使设计复杂化,因为您无法在其后面绘制另一个多边形。 另一种选择是为每个多边形设置一个infowindow。现在你只有一个全球的所有人。你将不得不跟踪每个状态并处理它们。像那样的...... –
尤尔科维奇:非常感谢你的可爱解释。我有些困惑。现在我清楚了。你找到任何方法来减少我的代码?如果是的话,你能帮我吗? – ArunRaj