15

मैं ऐसे ईवेंट की तलाश में हूं जो Google मानचित्र में पॉलीलाइन संपादित कर रहे हों, मार्कर पर 'ड्रैग' ईवेंट के समान। मुझे 'capturing_changed' ईवेंट मिला है, लेकिन ड्रैगस्टार्ट पर ड्रैगस्टार्ट और ड्रैगएंड पर आग लगती है, ड्रैग पर नहीं। जैसा कि मुझे मार्कर को ड्रैग करने और पॉलीलाइन को अपडेट करने की अनुमति देकर पहिया को फिर से शुरू करना है, जहां मार्कर कहां है, मूल रूप से संपादन योग्य पोलिलीन को पुनर्निर्मित करता है। मैं मार्कर जोड़ने में सक्षम होना चाहता हूं, जो संपादन योग्य पॉलीलाइन आसानी से करते हैं, लेकिन मुझे ड्रैग पर पता लगाने में सक्षम होना चाहिए। मुझे एपीआई दस्तावेज में या Google खोज पर कुछ भी नहीं मिला है, इसलिए मैंने सोचा कि मैं यहां पूछूंगा।Google मानचित्र पॉलीलाइन संपादित करने के लिए ईवेंट हैंडलर?

संपादित करें: ऐसा लगता है कि उत्तर नहीं है, यह कार्यक्षमता मौजूद नहीं है।

+0

आप एक घटना के लिए देख रहे है कि पॉलीलाइन (dragend काम करता है) खींचने पर आग? या जब आप [अंक डालें या बदलें] (https://developers.google.com/maps/documentation/javascript/overlays#user_editable_shapes_events)? एक संपादन योग्य पॉलीलाइन संपादित करते समय – geocodezip

+0

। तो, मार्करों के लिए 'ड्रैग' के बराबर, लेकिन पॉलीलाइन पर संपादन बिंदु में पॉलीलाइन पर एक बिंदु खींचने पर, संपूर्ण पॉलीलाइन को खींचने पर नहीं। –

उत्तर

20

simple Polyline example from the documentation परिवर्तनों पर ईवेंट जोड़ने के लिए संशोधित (insert_at, remove_at, set_at, dragend)।

<!DOCTYPE html> 
<html> 
    <head> 
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no"> 
    <meta charset="utf-8"> 
    <title>Google Maps JavaScript API v3 Example: Polyline Simple</title> 
    <link href="/maps/documentation/javascript/examples/default.css" rel="stylesheet"> 
    <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script> 
    <script> 
var flightPath = null; 

     function initialize() { 
     var myLatLng = new google.maps.LatLng(0, -180); 
     var mapOptions = { 
      zoom: 3, 
      center: myLatLng, 
      mapTypeId: google.maps.MapTypeId.TERRAIN 
     }; 

     var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions); 

     var flightPlanCoordinates = [ 
      new google.maps.LatLng(37.772323, -122.214897), 
      new google.maps.LatLng(21.291982, -157.821856), 
      new google.maps.LatLng(-18.142599, 178.431), 
      new google.maps.LatLng(-27.46758, 153.027892) 
     ]; 
     flightPath = new google.maps.Polyline({ 
      path: flightPlanCoordinates, 
      strokeColor: '#FF0000', 
      strokeOpacity: 1.0, 
      strokeWeight: 2, 
      editable: true, 
      draggable: true 
     }); 
     google.maps.event.addListener(flightPath, "dragend", getPath); 
     google.maps.event.addListener(flightPath.getPath(), "insert_at", getPath); 
     google.maps.event.addListener(flightPath.getPath(), "remove_at", getPath); 
     google.maps.event.addListener(flightPath.getPath(), "set_at", getPath); 
     flightPath.setMap(map); 
     } 

function getPath() { 
    var path = flightPath.getPath(); 
    var len = path.getLength(); 
    var coordStr = ""; 
    for (var i=0; i<len; i++) { 
    coordStr += path.getAt(i).toUrlValue(6)+"<br>"; 
    } 
    document.getElementById('path').innerHTML = coordStr; 
} 

    </script> 
    </head> 
    <body onload="initialize()"> 
    <div id="map-canvas" style="height:500px; width:600px;"></div> 
    <div id="path"></div> 
    </body> 
</html> 

working example

कोड स्निपेट:

var flightPath = null; 
 

 
function initialize() { 
 
    var myLatLng = new google.maps.LatLng(0, -180); 
 
    var mapOptions = { 
 
    zoom: 3, 
 
    center: myLatLng, 
 
    mapTypeId: google.maps.MapTypeId.TERRAIN 
 
    }; 
 

 
    var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions); 
 

 
    var flightPlanCoordinates = [ 
 
    new google.maps.LatLng(37.772323, -122.214897), 
 
    new google.maps.LatLng(21.291982, -157.821856), 
 
    new google.maps.LatLng(-18.142599, 178.431), 
 
    new google.maps.LatLng(-27.46758, 153.027892) 
 
    ]; 
 
    flightPath = new google.maps.Polyline({ 
 
    path: flightPlanCoordinates, 
 
    strokeColor: '#FF0000', 
 
    strokeOpacity: 1.0, 
 
    strokeWeight: 2, 
 
    editable: true, 
 
    draggable: true 
 
    }); 
 
    google.maps.event.addListener(flightPath, "dragend", getPath); 
 
    google.maps.event.addListener(flightPath.getPath(), "insert_at", getPath); 
 
    google.maps.event.addListener(flightPath.getPath(), "remove_at", getPath); 
 
    google.maps.event.addListener(flightPath.getPath(), "set_at", getPath); 
 
    flightPath.setMap(map); 
 
} 
 

 
function getPath() { 
 
    var path = flightPath.getPath(); 
 
    var len = path.getLength(); 
 
    var coordStr = ""; 
 
    for (var i = 0; i < len; i++) { 
 
    coordStr += path.getAt(i).toUrlValue(6) + "<br>"; 
 
    } 
 
    document.getElementById('path').innerHTML = coordStr; 
 
} 
 
google.maps.event.addDomListener(window, 'load', initialize);
<script src="https://maps.googleapis.com/maps/api/js"></script> 
 
<div id="path"></div> 
 
<div id="map-canvas" style="height:500px; width:600px;"></div>

+2

जैसा कि मैंने ऊपर टिप्पणी में स्पष्ट किया है, यह वह नहीं है जिसे मैं ढूंढ रहा हूं। मैं एक ऐसी घटना चाहता हूं जो आग लगती है जबकि संपादन योग्य बिंदु खींचा जा रहा है। कल्पना करें कि संपादन योग्य पॉलीलाइन पर प्रत्येक संपादन बिंदु एक मार्कर था, मैं उस मार्कर के लिए 'ड्रैग' के बराबर चाहता हूं। –

+0

आपको इसकी आवश्यकता क्यों है? (मुझे नहीं लगता कि यह अस्तित्व में है, आप एक [वृद्धि अनुरोध] (http://code.google.com/p/gmaps-api-issues/) बनाने का प्रयास कर सकते हैं) – geocodezip

+0

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

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