चक्र आकर्षित करने के लिए निम्नलिखित कोड होने से (गूगल से लिया Play सेवाओं "मानचित्र" नमूना):एंड्रॉयड मानचित्र API v2 ड्रॉ सर्कल
:PolylineOptions options = new PolylineOptions();
int radius = 5; //What is that?
int numPoints = 100;
double phase = 2 * Math.PI/numPoints;
for (int i = 0; i <= numPoints; i++) {
options.add(new LatLng(SYDNEY.latitude + radius * Math.sin(i * phase),
SYDNEY.longitude + radius * Math.cos(i * phase)));
}
int color = Color.RED;
mMap.addPolyline(options
.color(color)
.width(2));
यह वही है दुनिया के विभिन्न हिस्से पर तैयार हो जाता है
जैसा कि आप देख हलकों वास्तव में हलकों और यहां तक कि एक दूसरे के अंडाकार मूल रूप से है नहीं कर रहे हैं।
मुझे लगता है कि int numPoints
चर में अंक की संख्या के आधार पर सर्कल का "एंटी-एलियासिंग" है।
int radius = 5
उदाहरण कोड में परिवर्तनीय क्या है? मेरा मतलब है कि यह क्या उपाय है?- और मुख्य प्रश्न मीटर में दिए गए त्रिज्या के साथ अच्छे सर्कल को आकर्षित करने का सही तरीका क्या होगा? कुछ है कि हम क्या साथ
canvas.drawCircle()
अद्यतन API v1 में था smiliar --------------------
ठीक गणित में सुधार के बाद मैं करने में सक्षम था आकर्षित "सही" सर्कल:
private void addCircle(LatLng latLng, double radius)
{
double R = 6371d; // earth's mean radius in km
double d = radius/R; //radius given in km
double lat1 = Math.toRadians(latLng.latitude);
double lon1 = Math.toRadians(latLng.longitude);
PolylineOptions options = new PolylineOptions();
for (int x = 0; x <= 360; x++)
{
double brng = Math.toRadians(x);
double latitudeRad = Math.asin(Math.sin(lat1)*Math.cos(d) + Math.cos(lat1)*Math.sin(d)*Math.cos(brng));
double longitudeRad = (lon1 + Math.atan2(Math.sin(brng)*Math.sin(d)*Math.cos(lat1), Math.cos(d)-Math.sin(lat1)*Math.sin(latitudeRad)));
options.add(new LatLng(Math.toDegrees(latitudeRad), Math.toDegrees(longitudeRad)));
}
mMap.addPolyline(options.color(Color.BLACK).width(2));
}
हालांकि चक्र मुझे लगता है की विरोधी aliasing कुछ हद तक नियंत्रण से बाहर है, और पर कुछ ज़ूम स्तर चक्र बदसूरत मिल सकता है:
कारण आप अंडाकार हो रही है क्योंकि यह पर गणित 'options.add (' बहुत ही बुनियादी है और दिखावा पृथ्वी सिर्फ कोपरनिकस पहले की तरह एक सपाट सतह है। आप छोटे क्षेत्रों पर आकर्षित यदि आप एक राउंडर सर्कल प्राप्त होगा। यदि आप एक सटीक सर्कल चाहते हैं तो आप उस गणित को पृथ्वी के आकार को उचित रूप से ध्यान में रखेंगे। – Budius
@ लीजा, ड्रॉ करने के लिए 'पॉलीगॉन' के बजाय 'पॉलीलाइन' का उपयोग करने का कोई विशिष्ट कारण सर्कल? मैंने पॉलीगॉन का उपयोग करने की कोशिश की और मुझे एक ही आउटपुट मिला। तो, आपको कोई विचार है कि उनमें से कौन सा उपयोग करने के लिए सबसे अच्छा है? धन्यवाद। –
@ Archie.bpgc वास्तव में नहीं, आप बहुभुज का उपयोग कर सकते हैं यदि आपको एक उदाहरण के लिए विकल्प भरें। अन्यथा इस मामले में कोई बड़ा अंतर नहीं है। –