मैं एक पॉलीलाइन के चारों ओर एक बहुभुज आकर्षित करना चाहता हूं। मेरे मामले में पॉलीलाइन एक Google मानचित्र दिशा है और मुझे Google मानचित्र कैनवास के भीतर इसके चारों ओर एक बहुभुज दिखाना होगा।जावास्क्रिप्ट में पॉलीलाइन के चारों ओर बहुभुज कैसे आकर्षित करें?
पहले:
मैं offsetting के लिए जावास्क्रिप्ट क्लिपर लाइब्रेरी का उपयोग करें। मेरे पास निम्न पॉलीलाइन (मार्ग) है: मैं क्लिपर का उपयोग करके नीचे ऑफसेट पॉलीगॉन बना देता हूं:
मेरे पास JS Bin example काम कर रहा है।
कोड है:
<html>
<head>
<title>Javascript Clipper Library/Offset polyline</title>
<script src="clipper.js"></script>
<script>
function draw() {
var polygons = [[{"X":72,"Y":59.45},{"X":136,"Y":66},{"X":170,"Y":99},{"X":171,"Y":114},{"X":183,"Y":125},{"X":218,"Y":144},{"X":218,"Y":165},{"X":226,"Y":193},{"X":254,"Y":195},{"X":283,"Y":195},{"X":292,"Y":202},{"X":325,"Y":213},{"X":341,"Y":234},{"X":397,"Y":245},{"X":417,"Y":248}]];
var scale = 100;
reverse_copy(polygons);
polygons = scaleup(polygons, scale);
var cpr = new ClipperLib.Clipper();
var delta = 25;
var joinType = ClipperLib.JoinType.jtRound;
var miterLimit = 2;
var AutoFix = true;
var svg, offsetted_polygon,
cont = document.getElementById('svgcontainer');
offsetted_polygon = cpr.OffsetPolygons(polygons, delta * scale, joinType, miterLimit, AutoFix);
//console.log(JSON.stringify(offsetted_polygon));
// Draw red offset polygon
svg = '<svg style="margin-top:10px;margin-right:10px;margin-bottom:10px;background-color:#dddddd" width="540" height="340">';
svg += '<path stroke="red" fill="red" stroke-width="2" stroke-opacity="0.6" fill-opacity="0.2" d="' + polys2path(offsetted_polygon, scale) + '"/>';
//Draw blue polyline
svg += '<path stroke="blue" stroke-width="3" d="' + polys2path(polygons, scale) + '"/>';
svg += '</svg>';
cont.innerHTML += svg;
}
// helper function to scale up polygon coordinates
function scaleup(poly, scale) {
var i, j;
if (!scale)
scale = 1;
for(i = 0; i < poly.length; i++) {
for(j = 0; j < poly[i].length; j++) {
poly[i][j].X *= scale;
poly[i][j].Y *= scale;
}
}
return poly;
}
// converts polygons to SVG path string
function polys2path (poly, scale) {
var path = "", i, j;
if (!scale)
scale = 1;
for(i = 0; i < poly.length; i++) {
for(j = 0; j < poly[i].length; j++) {
if (!j)
path += "M";
else
path += "L";
path += (poly[i][j].X/scale) + ", " + (poly[i][j].Y/scale);
}
path += "Z";
}
return path;
}
function reverse_copy(poly) {
// Make reverse copy of polygons = convert polyline to a 'flat' polygon ...
var k, klen = poly.length, len, j;
for (k = 0; k < klen; k++) {
len = poly[k].length;
poly[k].length = len * 2 - 2;
for (j = 1; j <= len - 2; j++) {
poly[k][len - 1 + j] = {
X: poly[k][len - 1 - j].X,
Y: poly[k][len - 1 - j].Y
}
}
}
}
</script>
</head>
<body onload="draw()">
<h2>Javascript Clipper Library/Offset polyline</h2>
This page shows an example of offsetting polyline and drawing it using SVG.
<div id="svgcontainer"></div>
</body>
</html>
और यह सब अच्छा है, लेकिन अब मैं गूगल मैप्स दिशाओं से अंकों के साथ बहुभुज चर बदलना होगा, तो मैं इस परिवर्तन कार्य करें:
directionsService.route(request, function(response, status) {
if (status == google.maps.DirectionsStatus.OK) {
directionsDisplay.setDirections(response);
function draw() {
var polygons = response.routes[0].overview_path;
//REST OF CODE
}
}
}
मेरे पास है पॉलीलाइन के चारों ओर बहुभुज को ऑफसेट करने के लिए इस कोड के साथ JS Bin example।
लेकिन कुछ समस्या है, जिसे मैं regonize नहीं कर सकता और मुझे दिशाओं के चारों ओर बहुभुज नहीं मिल सकता है।
क्या इस समस्या को हल करने का कोई तरीका है?
क्यों - इस प्रश्न के लिए शून्य से, क्या गलत है? –
यह मैं नहीं था जो डाउनवॉटेड था, लेकिन मैं कल्पना कर सकता हूं कि ऐसा इसलिए था क्योंकि आपका प्रश्न बहुत व्यापक था। इसलिए। अपने कार्यक्रमों को डीबग करने के लिए यहां नहीं है।आपको यह दिखाने की ज़रूरत है कि समस्या को हल करने के लिए आपने क्या कदम उठाए हैं। उदाहरण के लिए, पहला कदम आपके कोड को व्यवस्थित करना होगा और कंसोल में दिखाए जा रहे जावास्क्रिप्ट त्रुटियों से छुटकारा पाना होगा। तो क्या आप इसे मार्ग (बहुभुज के बिना) प्रदर्शित कर सकते हैं? फिर बहुभुज कोड जोड़ने का प्रयास करें। –
हाँ, मैं var polygon = response.routes [0] .overview_path के साथ अपनी समस्या को हल करने का प्रयास करता हूं; –