গুগল ম্যাপে পলাইনগুলির চিহ্নিতকারী এবং মিডপয়েন্টগুলি ব্যবহার করে কীভাবে বহুভুজ আঁকবেন


9

আমি মানচিত্রে একটি ফ্রি হ্যান্ড বহুভুজ আঁকতে চাই I আমি সাধারণ গুগল ম্যাপ দিয়ে শুরু করেছি এবং বহুভুজ অঙ্কন করেছি এবং এটি সঠিকভাবে কাজ করছে তবে এখন আমি খুঁজছি যে কোনও ব্যবহারকারী কীভাবে মানচিত্রে পয়েন্টগুলিতে ক্লিক করে এবং এর মধ্যবর্তী পয়েন্টগুলিতে মার্কারগুলি প্রসারিত করে বহুভুজ আঁকতে পারবেন বহুভুজ।

বহুভুজ সহ এখন আমার মানচিত্রটি দেখতে মনে হচ্ছে:

এই

এবং আমি বাস্তবায়ন করতে চাই:

এই

এখানে আমার কোড:

     public class MapActivity extends FragmentActivity implements OnMapReadyCallback {

private GoogleMap mMap;
Button save_field;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_map);

    // Retrieve the content view that renders the map.
    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
            .findFragmentById(R.id.map);
    mapFragment.getMapAsync(this);

    FrameLayout Frame_map = (FrameLayout) findViewById(R.id.frame_map);
    Button btn_draw_State = (Button) findViewById(R.id.btn_draw_State);
    final Boolean[] Is_MAP_Moveable = {false}; // to detect map is movable

    // Button will change Map movable state
    btn_draw_State.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Is_MAP_Moveable[0] = !Is_MAP_Moveable[0];
        }
    });
}

public GoogleMap getmMap() {
    return mMap;
}

@Override
public void onMapReady(GoogleMap googleMap) {
    mMap = googleMap;

    /*polygon should be declared as member of the fragment class if you want just one polygon at a time*/
    final List<LatLng> latLngList = new ArrayList<>(); // list of polygons
    final List<Marker> markerList = new ArrayList<>();

    mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {
        @Override
        public void onMapClick(final LatLng latLng) {


            MarkerOptions markerOptions = new MarkerOptions(); //create marker options
            markerOptions.position(latLng);
            markerOptions.title(latLng.latitude + ":" + latLng.longitude);
            mMap.clear();
            mMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
            mMap.animateCamera(CameraUpdateFactory.newLatLng(latLng));
            Marker marker = mMap.addMarker(markerOptions);
            latLngList.add(latLng);
            markerList.add(marker);


            Polygon polygon = null;
            if (polygon != null ) polygon.remove(); // remove the previously drawn polygon
            PolygonOptions polygonOptions = new PolygonOptions().addAll(latLngList).clickable(true);
            polygon = mMap.addPolygon(new PolygonOptions().addAll(latLngList).fillColor(Color.BLUE).strokeColor(Color.RED));//add new polygon

        }
    });
             save_field = findViewById(R.id.save);
             save_field.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            startActivity(new Intent(MapActivity.this, Save_Fields.class));
            finish();
        }
    });
  }
 }

আমি এই বিষয় নিয়ে প্রচুর গবেষণা ও বিকাশ করেছি কিন্তু গুগল ম্যাপে এ জাতীয় জিনিস বাস্তবায়নের সঠিক উপায় পাইনি। যদি কেউ উপায় জানেন তবে দয়া করে সমাধান সন্ধান করতে আমাকে সহায়তা করুন। তুমাকে অগ্রিম ধন্যবাদ:)

উত্তর:


4

গুগল ম্যাপে বহুভুজ, পললাইন এবং পয়েন্ট আঁকতে ম্যাপড্রয়িংটুলস লাইব্রেরিটি ব্যবহার করুন এবং আপনার অ্যাপ্লিকেশনটিতে স্থানাঙ্ক ফেরত দিন। এই গ্রন্থাগারটি এমন অ্যাপ্লিকেশনের জন্য দরকারী যা ব্যবহারকারীদের কাছ থেকে ডেটা পেতে একাধিক পয়েন্ট বা জমির সীমানা আঁকবে।

গাইডলাইন ব্যবহার করুন

আপনার অ্যাপটিতে এই কোডটি যুক্ত করুন:

DrawingOption.DrawingType currentDrawingType = DrawingOption.DrawingType.POLYGON;
Intent intent =
new DrawingOptionBuilder()
    .withLocation(35.744502, 51.368966)
    .withMapZoom(14)
    .withFillColor(Color.argb(60, 0, 0, 255))
    .withStrokeColor(Color.argb(100, 255, 0, 0))
    .withStrokeWidth(3)
    .withRequestGPSEnabling(false)
    .withDrawingType(currentDrawingType)
    .build(getApplicationContext());
startActivityForResult(intent, REQUEST_CODE);

উপাদান অঙ্কন এবং একটি সম্পন্ন ক্লিক করার পরে, ডেটা আপনার ক্রিয়াকলাপে ফিরে আসবে

 @Override
protected void onActivityResult(int requestCode, int resultCode, 
Intent data) {
if (resultCode == RESULT_OK && requestCode == REQUEST_CODE && data != 
null) {
DataModel dataModel =
                data.getExtras().getParcelable(MapsActivity.POINTS);
LatLng[] points=dataModel.getPoints();
 }
}

MapDrawingTools

ইউটিউব ডেমো

শুভ কোডিং :)


আমি গিথুব এবং ট্রাইং চালানোর জন্য ম্যাপড্রেইংটুলস কোডটি ডাউনলোড করি তবে এটি error: package rx.functions does not existএই ত্রুটিটি দেখায়
মৃণাল

হ্যাঁ আমি দেখছি. সরাসরি এটি ব্যবহার করুন। আমি আশা করি এটা আপনার ক্ষেত্রে বাস্তবায়নের জন্য উপযোগী হল 'com.github.bkhezry: MapDrawingTools: 1.1.3'
Daxesh Vekariya

এখনও একই ত্রুটি পেয়েছে
মৃণাল

দয়া করে এটি ব্যবহার করুন। গ্রন্থাগার থেকে সমস্ত প্যাকেজ অনুলিপি করুন এবং আপনার প্রকল্পে যুক্ত করুন। এবং তারপরে গ্র্যাডলে এই লিবি যুক্ত করুন। বাস্তবায়ন 'io.reactivex: rxjava: 1.3.0'
Daxesh Vekariya

1
এটা আমি চাই না। আমি সম্পাদনাযোগ্য বহুভুজ আঁকতে চেষ্টা করছি
মৃণাল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.