versteckt werden Ich habe eine PolyLine, die ich mit Klicks auf die Karte zeichne. Das funktioniert gut, aber aus irgendeinem Grund kann ich das nicht vor der Karte verstecken. Entfernen und alles andere funktioniert gut. Ich habe fast alles aus setVisible zu setMap (null) versucht, wie Sie in dem Code unten können.PolyLine kann nicht aus der Karte
var drawOnMap = function(){
var poly = null;
var path;
var encodedString;
var decodedString;
function drawPolyLine(latLng){
if(!poly){
path = new google.maps.MVCArray();
}
console.log(latLng);
path.push(latLng);
poly = new google.maps.Polyline({
path: path,
strokeColor: '#000000',
strokeOpacity: 1.0,
strokeWeight: 3,
editable: true,
map: map
});
}
function getPolyLineData(){
//console.log(path.getPath());
var firstPoint = path.getAt(0);
var lastPoint = path.getAt(path.length - 1);
console.log(firstPoint);
console.log(lastPoint);
if ($j("#useWaypoints").is(":checked")) {
var twaypoints = path.slice(1, path.length - 1);
var waypoints = [];
for (var i = 0; i < twaypoints.length; i++) {
waypoints.push(
{
location: new google.maps.LatLng(twaypoints[i].lat(), twaypoints[i].lng())
}
);
}
} else {
waypoints = null;
}
return data = {
origin: {lat: firstPoint.lat(), lng: firstPoint.lng()},
destination: {lat: lastPoint.lat(), lng: lastPoint.lng()},
waypoints: waypoints
};
}
function removePolyLine(){
for(var i = path.length; i > 0 ; i--){
path.pop();
}
}
function removeLastPoint(){
if(path.length > 0){
path.pop();
poly.setPath(path);
}
}
function hidePolyLine(){
console.log("HIDE");
console.log(poly.getVisible());
poly.getVisible() ? poly.setVisible(false) : poly.setVisible(true);
poly.setMap(null);
}
function showPolyLine(){
console.log("SHOW");
poly.setVisible(true);
poly.setMap(map);
}
return {
drawPolyLine: drawPolyLine,
getPolyLineData: getPolyLineData,
removeLastPoint: removeLastPoint,
removePolyLine: removePolyLine,
showPolyLine: showPolyLine,
hidePolyLine: hidePolyLine
}
}();
Kann mir jemand sagen, warum das nicht funktioniert. Laut Google Maps API habe ich recht. Ich habe auch mehrere SO Fragen zu diesem Thema gefunden, aber nichts hat für mich funktioniert.
Um ein bisschen genauer zu sein. Warum funktioniert dieser Teil nicht? Ich habe keine Gründe sehen Sie es ...
poly.getVisible() ? poly.setVisible(false) : poly.setVisible(true);
EDIT: Ich Aufruf der hide/show Funktionalität über Radiotasten
$j("input[name='editDraw']").change(function() {
console.log("editDraw change");
if ($j("#editDraw_on").is(":checked")) {
drawOnMap.showPolyLine();
};
if ($j("#editDraw_off").is(":checked")) {
//console.log("OFF");
drawOnMap.hidePolyLine();
};
});
Der Code ist Surround ed in einem Objekt mit dem aufdeckenden Modulmuster. Das Objekt wird eigenständig ausgeführt, um nur eine Karteninstanz zu testen und ein click -Ereignis zum Aufrufen von drawPolyLine (latLng) ist erforderlich.
Wenn Sie etw brauchen, mir zu helfen, lassen Sie es mich wissen. Oder wenn das Problem zu einfach ist, um es zu beantworten :) bitte lassen Sie es mich wissen. Ich verstehe es nicht – BayLife
Woher rufst du 'hidePolyLine' an? – duncan
@duncan Ich habe mein Q aktualisiert. Es ist über Radioknöpfe geschehen. Die Funktionen werden definitiv genannt! – BayLife