2010-12-30 21 views
9

इसलिए मैंने इसके बारे में पिछले प्रश्नों की जांच की, जो सभी वी 2 से संबंधित हैं, जो कि कोई मदद नहीं है।Google मानचित्र पॉलीलाइन - मैं इसे कैसे हटा सकता हूं?

तो, मैं दो मार्कर बनाने, मार्कर [ "से"] और मार्कर

[ "से"] के रूप में एक सरणी में उन्हें बचाने और फिर उन्हें इस

function route(){ 
     for(var key in markers) { 
      flightPlanCoordinates.push(markers[key].position); 
     } 
     flightPath = new google.maps.Polyline({ 
      path: flightPlanCoordinates, 
      strokeColor: "#FF0000", 
      strokeOpacity: 1.0, 
      strokeWeight: 2 
    }); 
    flightPath.setMap(map); 
} 

शानदार के साथ जोड़ें। लेकिन। अगली बार जब मैं इसका उपयोग करता हूं (सरणी में नए मार्करों के साथ) यह पिछले एक को हटाए बिना वहां एक पॉलीलाइन जोड़ता है। मैंने पहली सरणी, फ्लाइटपाथ, सेटमैप (शून्य) और बहुत आगे से हटाकर सब कुछ करने की कोशिश की है।

नया ड्राइंग करने से पहले पिछली रेखा को हटाने का सही तरीका क्या है?

संपादित करें: हल समाधान

function route(){ 
    var flightPlanCoordinates = []; 
    for(var key in markers) { 
     flightPlanCoordinates.push(markers[key].position); 
    } 
    if(flightPath) { 
     flightPath.setPath(flightPlanCoordinates); 
    } else { 
     flightPath = new google.maps.Polyline({ 
      path: flightPlanCoordinates, 
      strokeColor: "#FF0000", 
      strokeOpacity: 1.0, 
      strokeWeight: 2 
     }); 
     flightPath.setMap(map); 
    } 
} 

कारण: flightPlanCoordinates दायरे के भीतर प्रारंभ करने की आवश्यकता है, इस सरणी हर बार यह प्रयोग किया जाता है, ठीक से इसे बाहर की सफाई रीसेट करता है। (इसके अलावा धन्यवाद नीचे इनपुट मान लिया जाये कि कोड थोड़ा अच्छे बनाने के लिए करने के लिए।

+0

आप इस परियोजना का एक कार्यशील लिंक साझा कर सकते हैं? मैं एक स्थानीय एयरलाइन के लिए कुछ ऐसा कर रहा हूँ। – andufo

उत्तर

3

मैं flightPath = new... से पहले var नहीं दिख रहा है, इसलिए मुझे लगता है flightPath एक वैश्विक चर रहा है।

function route(){ 
    //flightPath.setMap(null); Doesnt't work!? 
    for(var key in markers) { 
     flightPlanCoordinates.push(markers[key].position); 
    } 
    if(flightPath) {//If flightPath is already defined (already a polyline) 
     flightPath.setPath(flightPlanCoordinates); 
    } else { 
     flightPath = new google.maps.Polyline({ 
      path: flightPlanCoordinates, 
      strokeColor: "#FF0000", 
      strokeOpacity: 1.0, 
      strokeWeight: 2 
     }); 
     flightPath.setMap(map);//It's not necessary to setMap every time 
    } 

} 
+0

फ्लाइटपाथ वास्तव में दायरे में है। हालांकि, setMap (शून्य) * काम * नहीं करता है – Mantar

1

function traffic(map){ 
// polyline 
this.path=null; 
this.map = google.maps.Map(ele, opt); 
} 
traffic.prototype._draw = function() 
{ 
    //create new polyline 
    var path = new google.maps.Polyline({ 
     path: this.get('latlngArr'), 
     strokeColor: "#FF0000", 
     strokeOpacity: 1.0, 
     strokeWeight: 2 
    }); 
    //delete old 
    var prepath = this.path; 
    if(prepath){ 
     prepath.setMap(null); 
    } 
    //new polyline 
    path.setMap(this.map); 

    this.path = path; 
} 
7

है कि " mypolyline "अपने पॉलीलाइन वस्तु है, आप भी कोशिश कर सकते हैं:

mypolyline.setPath([]); 

इस तरह, आप पॉलीलाइन, से निर्देशांक बाहर ले जा रहे हैं जो प्रभाव में इसे मानचित्र से हटा देगा।

1

फ्लाइटपाथ लैट्लिंग ऑब्जेक्ट्स की एक सरणी है, व्यक्तिगत पॉलिलाइन नहीं। मुझे लगता है कि आपको शायद पॉलिलाइन के लिए एक अलग सरणी की आवश्यकता है, जिसे आप सभी को हटाने के लिए लूप कर सकते हैं। एक वैश्विक सरणी रेखा बनाएँ।

var line = []; 
flightPath = new google.maps.Polyline({ 
     path: flightPlanCoordinates, 
     strokeColor: "#FF0000", 
     strokeOpacity: 1.0, 
     strokeWeight: 2 
    }); 
line.push(flightPath); 

अब आप सभी पॉलीलाइन ऑब्जेक्ट्स को सरणी रेखा में दबा रहे हैं। आप इसे अदृश्य बनाने या इस तरह यह पाशन मानचित्र से निकाल सकते हैं:

for (i=0; i<line.length; i++) 
{       
    line[i].setMap(null); //or line[i].setVisible(false); 
} 
1

सेट strokeWeight: 0 तो पॉलीलाइन छुपा देगा

संबंधित मुद्दे