2010-09-22 18 views

उत्तर

5

आप क्या कर सकते हैं encoded polyline algorithm का उपयोग पर्याप्त रूप से परिपत्र पथ प्राप्त करने के लिए पर्याप्त अंक उत्पन्न करने के लिए किया जा सकता है। निश्चित रूप से शामिल कोडिंग है: आपको अपने सर्कल के केंद्र और त्रिज्या को प्राप्त करने की आवश्यकता होगी, इसे लेट/लांग की श्रृंखला में बदल दें, फिर एल्गोरिदम का उपयोग करके एन्कोड करें।

एक विकल्प के रूप में, आप एक पारदर्शी gif छवि को मार्कर के रूप में उपयोग करने में सक्षम हो सकते हैं और इसे अपने मानचित्र में डाल सकते हैं।

+2

ध्यान दें कि मार्करों की आकार सीमा है। 100px द्वारा 100px मेरे लिए काम नहीं किया, लेकिन 75px द्वारा 75px किया था। – kingjeffrey

+0

समस्या यह है कि सर्कल की लंबाई के आधार पर आप बहुत सारे अंक की आवश्यकता समाप्त कर सकते हैं ताकि यह वास्तव में एक सर्कल की तरह दिख सके, और इसलिए आप यूआरएल अक्षरों से कम हो सकते हैं (वर्तमान में 1024 वर्णों की एक सीमा है) – renatoargh

+0

2048 वर्ण, क्षमा करें – renatoargh

1

यह संभव है लेकिन आपको एक सर्कल की तरह दिखने के लिए कई पक्षों के साथ एक आकृति खींचना है।

<img src="http://maps.google.com/maps/api/staticmap?size=600x500&path=fillcolor:0x0000FF|weight:3|color:0xFF0000|enc:ue{cI|rrH`@[email protected]@[email protected][email protected][email protected]@[email protected]@[email protected]@`[email protected]@dWy`@nX{]vY{ZxZuWx[kTr\_Qh]oMz]}If^iFl^uBn^?n^tBd^hFz]|Ih]nMr\~Px[jTxZtWvYzZnXz]dWx`@[email protected]`T`[email protected]@[email protected]@[email protected]@[email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected][email protected]`[email protected]@[email protected]@[email protected]@[email protected]@eWx`@oX|]wYzZyZtWy[jTs\~Pi]lM{]|Ie^jFo^rBo^?m^sBg^kF{]}Ii]mMs\_Qy[kTyZuWwY{ZoX}]eWy`@[email protected]@[email protected]@[email protected]{[email protected]@[email protected][email protected]@[email protected]@[email protected]&sensor=true" border="0"/> 

Or try this link to view it

इस मैं freemaptools.com

+0

इस गतिशील बनाने के लिए कोई तरीका है? यदि मेरे पास उपयोग करने के लिए कई अलग-अलग निर्देशांक हैं? –

+0

@ जोनासबी यह संभव है। एक पॉलीलाइन जेनरेटर की तलाश करें। मैंने इस उद्देश्य के लिए एक कोणीय निर्देश दिया है यदि यह कोई उपयोग है? – sidonaldson

+0

यह ध्यान देने योग्य है कि साइट एक PHP पॉलीलाइन एन्कोडर का उपयोग करती है (क्लाइंट साइड स्रोत कोड से: 'xmlHttp.open (" POST "," AJAX/csv-polyline-encoder.php ", सत्य);')। –

5

इस्तेमाल किया आप एक विस्तृत PolyLine बनाकर एक चक्र का प्रतिनिधित्व कर सकते बाद से गूगल स्थिर मानचित्र का समर्थन नहीं करता बनाने के लिए:

यहाँ मेरी उदाहरण है एक सर्कल खुद ड्राइंग।

Here is a request example जिसमें 2 सर्कल त्रिज्या 0.5 और 5 किलोमीटर के साथ हैं। ध्यान रखें कि उचित एन्कोडिंग पॉलीलाइन बनाने के लिए आपको एल्गोरिदम की आवश्यकता है। मैंने इस implementation का उपयोग किया क्योंकि मैं PHP में कोडिंग कर रहा था लेकिन आप जिस भाषा को चाहते हैं उसके आधार पर आप स्वयं को कुछ इसी तरह ढूंढ सकते हैं या विकसित कर सकते हैं।

यहाँ PHP कोड है कि मैं अनुरोध उत्पन्न करने के लिए प्रयोग किया जाता है:

<?php 
/* set some options */ 
$mapLat = filter_input(INPUT_POST, 'lat1'); // latitude for map's and circle's center 
$mapLng = filter_input(INPUT_POST, 'lon1'); // longitude for map's and circle's center 
$mapRadius1 = 0.5; // the radius of the first circle (in Kilometres) 
$mapRadius2 = 5; // the radius of the second circle (in Kilometres) 
$mapFill_first = '330000'; // fill colour of the first circle 
$mapFill_second = 'FF99FF'; // fill colour of the second circle 
$map1Border1 = '91A93A'; // border colour of the first circle 
$map1Border2 = '0000CC'; // border colour of the second circle 
$mapWidth = 450; // map image width (max 640px) 
$mapHeight = 450; // map image height (max 640px) 
$zoom = 11; 
$scale = 2; 
/** create our encoded polyline string for the first circle*/ 
$EncString1 = GMapCircle($mapLat, $mapLng, $mapRadius1); 
/** create our encoded polyline string for the second circle*/ 
$EncString2 = GMapCircle($mapLat, $mapLng, $mapRadius2); 
/** put together the static map URL */ 
$MapAPI = 'http://maps.google.com.au/maps/api/staticmap?'; 
$MapURL = $MapAPI . 'center=' . $mapLat . ',' . $mapLng . '&zoom=' . $zoom . '&size=' . 
    $mapWidth . 'x' . $mapHeight . '&scale=' . $scale . '&markers=color:red%7Clabel:S%7C'.$mapLat.','.$mapLng . 
    '&maptype=roadmap&path=fillcolor:0x' . $mapFill_first . 
    '33%7Ccolor:0x' . $map1Border1 . '00%7Cenc:' . $EncString1 . '&path=fillcolor:0x' . 
    $mapFill_second . '33%7Ccolor:0x' . $map1Border2 . '00%7Cenc:' . $EncString2; 

/* output an image tag with our map as the source */ 
//echo '<img src="' . $MapURL . '" />'; 
echo json_encode($MapURL); 

function GMapCircle($Lat, $Lng, $Rad, $Detail = 8) 
{ 
    $R = 6371; 
    $pi = pi(); 
    $Lat = ($Lat * $pi)/180; 
    $Lng = ($Lng * $pi)/180; 
    $d = $Rad/$R; 
    $points = array(); 
    for ($i = 0; $i <= 360; $i += $Detail) 
    { 
     $brng = $i * $pi/180; 
     $pLat = asin(sin($Lat) * cos($d) + cos($Lat) * sin($d) * cos($brng)); 
     $pLng = (($Lng + atan2(sin($brng) * sin($d) * cos($Lat), cos($d) - sin($Lat) * sin($pLat))) * 180)/$pi; 
     $pLat = ($pLat * 180)/$pi; 
     $points[] = array($pLat, $pLng); 
    } 

    require_once('PolylineEncoder.php'); 
    $PolyEnc = new PolylineEncoder($points); 
    $EncString = $PolyEnc->dpEncode(); 

    return $EncString['Points']; 
} 

को jomacinc के ट्यूटोरियल धन्यवाद, का आनंद लें :)

3

आप computeOffset विधि का उपयोग कर काफी आसानी से एक चक्र का अनुमान लगा सकता जो आपको परिधि के साथ समन्वय प्राप्त करने की अनुमति देता है।

इस उदाहरण में मैंने 8 डिग्री की वृद्धि का उपयोग किया, इसलिए यह निर्देशांक के 45 जोड़े देगा। सर्कल के आकार के लिए मैं स्थिर नक्शा में अच्छी तरह से गोल सर्कल का उपयोग कर रहा था। यदि आप बड़ी मंडलियों का उपयोग कर रहे हैं, तो बस वृद्धि को कुछ छोटे में बदलें, उदाहरण के लिए जे = जे + 6.

परिवर्तनीय pathText स्थिर मानचित्र के लिए आवश्यक शेष वेब पते में जोड़ा गया है।

var pathText = '&path='; 
var circumLatLng; 

for (var j = 0; j < 361; j = j + 8) { 

circumLatLng = google.maps.geometry.spherical.computeOffset(circle.getCenter(), circle.getRadius(), j); 

pathText += circumLatLng.lat().toFixed(6) + ',' + circumLatLng.lng().toFixed(6) + '|'; 
} 
संबंधित मुद्दे