58 votes

Comment dessiner un polygone à main libre dans Google map V2 sous Android?

Je sais que cette question n'est pas unique, car même question est déjà posée par d'autres développeurs et encore ils n'obtient pas de solution exacte, donc je suis de nouveau faire même chose.

C'est Simple, je tiens à attirer Free Hand Polygon on the Map in Google Map V2.Cette Tâche a été possible grâce à Overlay Carte V1 mais Google Map a supprimer de la classe de formulaire V2 on ne peut Donc pas l'utiliser. (Et que je peux de ceGoogle Map V2 a Supprimer de Superposition de Classe).

Bon Exemple de Google Map V1 pour tirage gratuit style de polygone.

Dans la Carte V2, Nous pouvons tracer un polygone à l'aide par programme à l'aide de Google Officiel Doc mais Que devons-nous tirer de l'utilisateur ? J'ai trouvé sait pas de réponse pour la Carte V2

J'ai commencer avec de simples Google Map & tracer un polygone à l'aide par programme et son travail correctement, mais maintenant, je suis à la recherche de comment l'utilisateur peut dessiner ? Je Ne veux pas tirer de base sur le Marqueur sur le polygone.

// Instantiates a new Polygon object and adds points to define a rectangle
PolygonOptions rectOptions = new PolygonOptions()
              .add(new LatLng(37.35, -122.0),
                   new LatLng(37.45, -122.0),
                   new LatLng(37.45, -122.2),
                   new LatLng(37.35, -122.2),
                   new LatLng(37.35, -122.0));

// Get back the mutable Polygon
Polygon polygon = myMap.addPolygon(rectOptions);

J'ai fait beaucoup de Rnd sur ce sujet, mais n'obtient pas de meilleure façon de mettre en œuvre une telle chose dans la Carte V2 aussi.

Quelques Question

  • Comment Dessiner Gratuitement style de polygone dans la Carte V2 (que l'on peut faire avec la Carte V1) ?
  • Est-il une astuce ou une alternative à réaliser cette chose , si oui comment ?
  • Pouvons-nous obtenir de toucher l'événement sur la carte & tracer un polygone ?
  • Est-il possible dans la Carte V2 ?
  • Peut est-il possible avec d'événement tactile qui renvoient tableau de lat-long ?
  • Comment puis-je obtenir Lat-long de la base sur les coordonnées d'écran sur setOnDragListener ?

Chose est comme à chaque nouvelle version a quelque chose d'extra comparer à l'ancienne, donc je m'attends à la même chose que je peux obtenir la Carte v2 aussi.

Je ne te demande pas de me donner un exemple de code ou de poster votre code, il suffit de me donner quelques bon sens & de la documentation afin que je puisse remplir ma tâche.

Permettez-moi de corriger si je me trompe, en tout cas, et merci de ne pas me donner en bas de vote sans qu'il soit précisé si au moins je peux savoir où je me trompe .

Je dois fournir tous les documents et éléments de preuve que j'ai trouvé au cours du Rnd.

Votre aide sera apprécier par fond de mon coeur et Merci de donner de votre temps pour au moins lire ma requête.

86voto

chintan khetiya Points 5941

Après avoir passé toute la journée dans le Rnd et l'essai de quelques solutions de rechange j'ai trouvé des solution finale. En fait, j'ai trouvé deux solutions pour un même problème, mais je voudrais suggérer l'utilisation de la Variante 2 parce que c'est vraiment très facile de comparer à la Variante 1.

En fait, j'ai trouvé la Variante 1 avec l'aide de TheLittleNaruto , AndroidHacker et quelques autres développeurs et la Variante 2 avec l'aide de Khan merci donc à tous.

Alternative 1

Comment Dessiner Gratuitement style de polygone dans la Carte V2 (que l'on peut faire avec la Carte V1) ? Est-il possible dans la Carte V2 ?

Oui,C'est faisable, mais vous ne pouvez pas obtenir directement OnTouch() & OnDraw() sur la carte.Donc, Nous devons avoir à penser à une autre façon d'atteindre cet objectif.

Est-il une astuce ou une alternative à réaliser cette chose , si oui comment ?

Oui, Google Map V2 n'est pas supprot sur Touch() or OnDraw() sur la Carte à l'aide de class="com.google.android.gms.maps.SupportMapFragment" nous avons donc de prévoir un certain custom Fragment.

Est-il possible avec d'événement tactile qui renvoient tableau de lat-long ?

Oui, si nous créons sur mesure fragment de carte et de l'aide que nous pouvons les Toucher ou de l'événement Glisser sur la carte.

Comment puis-je obtenir Lat-long de la base sur les coordonnées d'écran sur setOnDragListener ?

setOnDragListener sera de retour à l'écran des coordonnées (x,y) et Maintenant il y a une certaine technique pour convertir (x,y) pour LatLng et qui est appelée Projection et, du même Point & LatLng.

customMapFragment.setOnDragListener(new MapWrapperLayout.OnDragListener() {@Override
    public void onDrag(MotionEvent motionEvent) {
        Log.i("ON_DRAG", "X:" + String.valueOf(motionEvent.getX()));
        Log.i("ON_DRAG", "Y:" + String.valueOf(motionEvent.getY()));

        float x = motionEvent.getX(); // get screen x position or coordinate 
        float y = motionEvent.getY();  // get screen y position or coordinate 

        int x_co = Integer.parseInt(String.valueOf(Math.round(x))); // casting float to int 
        int y_co = Integer.parseInt(String.valueOf(Math.round(y))); // casting float to int 

        projection = mMap.getProjection(); // Will convert your x,y to LatLng
        Point x_y_points = new Point(x_co, y_co);// accept int x,y value
        LatLng latLng = mMap.getProjection().fromScreenLocation(x_y_points); // convert x,y to LatLng
        latitude = latLng.latitude; // your latitude 
        longitude = latLng.longitude; // your longitude 

        Log.i("ON_DRAG", "lat:" + latitude);
        Log.i("ON_DRAG", "long:" + longitude);

        // Handle motion event:
    }
});

Comment sa fonctionne ?

Comme je l'ai déjà dit que nous devrions avoir à créer de la coutume, de la racine de la vue et de l'aide que nous pouvons obtenir Touchez ou faites Glisser Même sur la carte.

Étape : 1 nous créons MySupportMapFragment extends SupportMapFragment et nous allons l'utiliser comme sortie de fichier xml ,

 <fragment
        android:id="@+id/map"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        class="pkg_name.MySupportMapFragment" /> 

Étape : 2 Créer quelques - MapWrapperLayout extends FrameLayout on peut donc définir certains Touchez ou faites Glisser l'auditeur un cette mise en page et intégrer ce point de vue avec vue de la carte. Donc, Nous avons besoin d'une Interface qui va les utiliser dans Root_Map.java

MySupportMapFragment.Java

public class MySupportMapFragment extends SupportMapFragment {
    public View mOriginalContentView;
    public MapWrapperLayout mMapWrapperLayout;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {

        mOriginalContentView = super.onCreateView(inflater, parent, savedInstanceState);
        mMapWrapperLayout = new MapWrapperLayout(getActivity());
        mMapWrapperLayout.addView(mOriginalContentView);
        return mMapWrapperLayout;
    }

    @Override
    public View getView() {
        return mOriginalContentView;
    }

    public void setOnDragListener(MapWrapperLayout.OnDragListener onDragListener) {
        mMapWrapperLayout.setOnDragListener(onDragListener);
    }
}

MapWrapperLayout.java

    public class MapWrapperLayout extends FrameLayout {
     private OnDragListener mOnDragListener;

     public MapWrapperLayout(Context context) {
         super(context);
     }

     public interface OnDragListener {
         public void onDrag(MotionEvent motionEvent);
     }

     @Override
     public boolean dispatchTouchEvent(MotionEvent ev) {
         if (mOnDragListener != null) {
             mOnDragListener.onDrag(ev);
         }
         return super.dispatchTouchEvent(ev);
     }

     public void setOnDragListener(OnDragListener mOnDragListener) {
         this.mOnDragListener = mOnDragListener;
     }

 }

Root_Map.Java

public class Root_Map extends FragmentActivity {

    private GoogleMap mMap;
    public static boolean mMapIsTouched = false;
    MySupportMapFragment customMapFragment;
    Projection projection;
    public double latitude;
    public double longitude;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.root_map);
        MySupportMapFragment customMapFragment = ((MySupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map));
        mMap = customMapFragment.getMap();

        customMapFragment.setOnDragListener(new MapWrapperLayout.OnDragListener() {               @Override
            public void onDrag(MotionEvent motionEvent) {
                Log.i("ON_DRAG", "X:" + String.valueOf(motionEvent.getX()));
                Log.i("ON_DRAG", "Y:" + String.valueOf(motionEvent.getY()));

                float x = motionEvent.getX();
                float y = motionEvent.getY();

                int x_co = Integer.parseInt(String.valueOf(Math.round(x)));
                int y_co = Integer.parseInt(String.valueOf(Math.round(y)));

                projection = mMap.getProjection();
                Point x_y_points = new Point(x_co, y_co);
                LatLng latLng = mMap.getProjection().fromScreenLocation(x_y_points);
                latitude = latLng.latitude;
                longitude = latLng.longitude;

                Log.i("ON_DRAG", "lat:" + latitude);
                Log.i("ON_DRAG", "long:" + longitude);

                // Handle motion event:
            }
        });
    }}

Référence Link1 , Link2

Jusqu'ici je suis en mesure d'obtenir LatLong de base X,Y coordonnées de l'écran , Maintenant j'ai juste à stocker dans le Tableau et qu'tableau sera utilisé pour dessiner une carte et enfin il regarde comme sans forme de polygone.

enter image description here

J'espère que ce sera certainement vous aider.

Mise à jour:

La variante 2

Comme nous maintenant que la structure du Châssis est transparent, de sorte que j'ai réaliser à l'aide de Cadre de Mise en page. Dans ce cas, il n'est pas nécessaire de créer des custom fragment. Je viens d'utiliser un Cadre de Mise en page comme la racine de mise en page. Donc, fondamentalement, je vais obtenir de l'Événement Tactile de racine mise en page et qui va me rendre à l'écran des coordonnées que nous sommes dans la coutume fragment.

Maintenant, j'ai utilisé un Bouton à l'intérieur de la "contour Libre". Ainsi, lorsque vous cliquez sur cela, alors vous pouvez déplacer vos doigts sur la carte et dessiner à main libre polygone et qui permet de désactiver votre carte de mobiliers sur l'écran.Lorsque vous reClick sur le même bouton, l'écran passe en mode idéal.

root_map.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <fragment
        android:id="@+id/map"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        class="com.google.android.gms.maps.SupportMapFragment" />

    <FrameLayout
        android:id="@+id/fram_map"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >

        <Button
            android:id="@+id/btn_draw_State"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Free Draw" />
    </FrameLayout>

</FrameLayout>

Root_Map.java

FrameLayout fram_map = (FrameLayout) findViewById(R.id.fram_map);
Button btn_draw_State = (Button) findViewById(R.id.btn_draw_State);
Boolean Is_MAP_Moveable = false; // to detect map is movable 

// Bouton pour changer de Carte et mobiliers de l'etat

btn_draw_State.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        if (Is_MAP_Moveable != true) {
            Is_MAP_Moveable = true;
        } else {
            Is_MAP_Moveable = false;
       }
    }
});

Touch Sur de la structure du Châssis et avec l'aide de la faire certaines tâches

fram_map.setOnTouchListener(new View.OnTouchListener() {     @Override
    public boolean onTouch(View v, MotionEvent event) {
        float x = event.getX();
        float y = event.getY();

        int x_co = Math.round(x);
        int y_co = Math.round(y);

        projection = mMap.getProjection();
        Point x_y_points = new Point(x_co, y_co);

        LatLng latLng = mMap.getProjection().fromScreenLocation(x_y_points);
        latitude = latLng.latitude;

        longitude = latLng.longitude;

        int eventaction = event.getAction();
        switch (eventaction) {
            case MotionEvent.ACTION_DOWN:
                // finger touches the screen
                val.add(new LatLng(latitude, longitude));

            case MotionEvent.ACTION_MOVE:
                // finger moves on the screen
                val.add(new LatLng(latitude, longitude));

            case MotionEvent.ACTION_UP:
                // finger leaves the screen
                Draw_Map();
                break;
        }

        if (Is_MAP_Moveable == true) {
            return true;

        } else {
            return false;
        }
    }
});

// Dessiner votre carte

public void Draw_Map() {
    rectOptions = new PolygonOptions();
    rectOptions.addAll(val);
    rectOptions.strokeColor(Color.BLUE);
    rectOptions.strokeWidth(7);
    rectOptions.fillColor(Color.CYAN);
    polygon = mMap.addPolygon(rectOptions);
}

Pourtant, Maintenant vous avez juste à maintenir votre liste que vous dessinez , vous devez effacer votre liste précédente des données.

3voto

AndroidHacker Points 1693

Check this out .. je crois U sont capables de montrer de Google Map v2

Découvrez "decodePoly" et "drawPath" méthode AsyncTask

Principal Imphasis dans "drawPath" ..

PolylineOptions options = new PolylineOptions().width(5).color(Color.BLUE).geodesic(true);
            for (int z = 0; z < list.size(); z++) {
                LatLng point = list.get(z);
                options.add(point);
            }
            line = myMap.addPolyline(options);

Classe complète pour votre référence ..

package com.example.androidhackergooglemap;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONArray;
import org.json.JSONObject;

import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.Marker;
import com.google.android.gms.maps.model.MarkerOptions;
import com.google.android.gms.maps.model.Polyline;
import com.google.android.gms.maps.model.PolylineOptions;

import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.location.Location;
import android.location.LocationManager;
import android.os.AsyncTask;
import android.os.Bundle;
import android.provider.Settings;
import android.support.v4.app.FragmentActivity;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Toast;

public class MainActivity extends FragmentActivity implements OnClickListener {

    private GoogleMap myMap;
    Polyline line;
    Context context;

    Location location;
    boolean check_provider_enabled = false;

    // Static LatLng
    LatLng startLatLng = new LatLng(30.707104, 76.690749);
    LatLng endLatLng = new LatLng(30.721419, 76.730017);

    public void onCreate(Bundle bd) {
        super.onCreate(bd);
        setContentView(R.layout.activity_main);
        context = MainActivity.this;

        // GoogleMap myMap
        myMap = ((SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map)).getMap();
        myMap.setMyLocationEnabled(true);
        myMap.moveCamera(CameraUpdateFactory.newLatLng(startLatLng));
        myMap.animateCamera(CameraUpdateFactory.zoomTo(12));

        LocationManager service = (LocationManager) getSystemService(LOCATION_SERVICE);
        boolean enabled = service.isProviderEnabled(LocationManager.GPS_PROVIDER);
        location = service.getLastKnownLocation(LocationManager.GPS_PROVIDER);

        // check if enabled and if not send user to the GSP settings
        // Better solution would be to display a dialog and suggesting to 
        // go to the settings
        if (!enabled) {
          /*Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
          startActivity(intent);*/
            Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
            startActivity(intent);
            Toast.makeText(getApplicationContext(), "Enable GPS servcies to use this app.", Toast.LENGTH_LONG).show();
        } else{


            try{

                String urlTopass = makeURL(startLatLng.latitude,
                        startLatLng.longitude, endLatLng.latitude,
                        endLatLng.longitude);
                new connectAsyncTask(urlTopass).execute();

            }catch(Exception e){
                e.printStackTrace();
            }

        }





        // Now auto clicking the button
       // btntemp.performClick();
    }


    private class connectAsyncTask extends AsyncTask<Void, Void, String> {
        private ProgressDialog progressDialog;
        String url;

        connectAsyncTask(String urlPass) {
            url = urlPass;
        }

        @Override
        protected void onPreExecute() {
            // TODO Auto-generated method stub
            super.onPreExecute();
            progressDialog = new ProgressDialog(context);
            progressDialog.setMessage("Fetching route, Please wait...");
            progressDialog.setIndeterminate(true);
            progressDialog.show();
        }

        @Override
        protected String doInBackground(Void... params) {
            JSONParser jParser = new JSONParser();
            String json = jParser.getJSONFromUrl(url);
            return json;
        }

        @Override
        protected void onPostExecute(String result) {
            super.onPostExecute(result);
            progressDialog.hide();
            if (result != null) {
                drawPath(result);
            }
        }
    }

    public String makeURL(double sourcelat, double sourcelog, double destlat,
            double destlog) {
        StringBuilder urlString = new StringBuilder();
        urlString.append("http://maps.googleapis.com/maps/api/directions/json");
        urlString.append("?origin=");// from
        urlString.append(Double.toString(sourcelat));
        urlString.append(",");
        urlString.append(Double.toString(sourcelog));
        urlString.append("&destination=");// to
        urlString.append(Double.toString(destlat));
        urlString.append(",");
        urlString.append(Double.toString(destlog));
        urlString.append("&sensor=false&mode=driving&alternatives=true");
        return urlString.toString();
    }

    public class JSONParser {

        InputStream is = null;
        JSONObject jObj = null;
        String json = "";

        // constructor
        public JSONParser() {
        }

        public String getJSONFromUrl(String url) {

            // Making HTTP request
            try {
                // defaultHttpClient
                DefaultHttpClient httpClient = new DefaultHttpClient();
                HttpPost httpPost = new HttpPost(url);

                HttpResponse httpResponse = httpClient.execute(httpPost);
                HttpEntity httpEntity = httpResponse.getEntity();
                is = httpEntity.getContent();

            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            } catch (ClientProtocolException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                BufferedReader reader = new BufferedReader(
                        new InputStreamReader(is, "iso-8859-1"), 8);
                StringBuilder sb = new StringBuilder();
                String line = null;
                while ((line = reader.readLine()) != null) {
                    sb.append(line + "\n");
                }

                json = sb.toString();
                is.close();
            } catch (Exception e) {
                Log.e("Buffer Error", "Error converting result " + e.toString());
            }
            return json;

        }
    }

    public void drawPath(String result) {
        if (line != null) {
            myMap.clear();
        }
        myMap.addMarker(new MarkerOptions().position(endLatLng).icon(
                BitmapDescriptorFactory.fromResource(R.drawable.ic_launcher)));
        myMap.addMarker(new MarkerOptions().position(startLatLng).icon(
                BitmapDescriptorFactory.fromResource(R.drawable.ic_launcher)));
        try {
            // Tranform the string into a json object
            final JSONObject json = new JSONObject(result);
            JSONArray routeArray = json.getJSONArray("routes");
            JSONObject routes = routeArray.getJSONObject(0);
            JSONObject overviewPolylines = routes
                    .getJSONObject("overview_polyline");
            String encodedString = overviewPolylines.getString("points");
            List<LatLng> list = decodePoly(encodedString);

            PolylineOptions options = new PolylineOptions().width(5).color(Color.BLUE).geodesic(true);
            for (int z = 0; z < list.size(); z++) {
                LatLng point = list.get(z);
                options.add(point);
            }
            line = myMap.addPolyline(options);

            /*for (int z = 0; z < list.size() - 1; z++) {
                LatLng src = list.get(z);
                LatLng dest = list.get(z + 1);
                line = myMap.addPolyline(new PolylineOptions()
                        .add(new LatLng(src.latitude, src.longitude),
                                new LatLng(dest.latitude, dest.longitude))
                        .width(5).color(Color.BLUE).geodesic(true));
            }*/

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private List<LatLng> decodePoly(String encoded) {

        List<LatLng> poly = new ArrayList<LatLng>();
        int index = 0, len = encoded.length();
        int lat = 0, lng = 0;

        while (index < len) {
            int b, shift = 0, result = 0;
            do {
                b = encoded.charAt(index++) - 63;
                result |= (b & 0x1f) << shift;
                shift += 5;
            } while (b >= 0x20);
            int dlat = ((result & 1) != 0 ? ~(result >> 1) : (result >> 1));
            lat += dlat;

            shift = 0;
            result = 0;
            do {
                b = encoded.charAt(index++) - 63;
                result |= (b & 0x1f) << shift;
                shift += 5;
            } while (b >= 0x20);
            int dlng = ((result & 1) != 0 ? ~(result >> 1) : (result >> 1));
            lng += dlng;

            LatLng p = new LatLng((((double) lat / 1E5)),
                    (((double) lng / 1E5)));
            poly.add(p);
        }

        return poly;
    }

    @Override
    public void onClick(View arg0) {
        // TODO Auto-generated method stub

    }
}

Espérons que cela aide. Cheers!

Mise à JOUR

découvrez ce .. Création de OnDragListener de Google Map v2 Fragment

Vérifiez également celui-ci .. Comment dessiner une forme sur le fragment de carte en touchant l'aide de google map V2

Certains de référence .. Comment faire pour obtenir l'écran des coordonnées du marqueur dans google maps v2 android

2voto

TheLittleNaruto Points 2924

Ainsi, nous avons une solution pour la main libre de dessiner sur la carte v2. Mettre en oeuvre GoogleMap.OnMarkerDragListener de votre activité sur la carte . Il va surcharger onMarkerDrag fonction.

@Override
public void onMarkerDrag(Marker marker) {

   //add the marker's latlng in a arraylist of LatLng and pass it to the loop
    for (int i = 0; i < arraylistoflatlng.size(); i++) {
         myMap.addPolyline(new PolylineOptions()
        .addAll(arraylistoflatlng)
        .width(5)
        .color(Color.RED));
    }
    }

vous pouvez passer d'une sorte de hack pour gratuit comme la main dès que l'utilisateur va toucher la carte, vous aurez à détecter que les coordonnées et le transmettre à la onMarkerDrag . Comme vous aurez à utiliser le domaine de l'information pour la poursuite du processus. Pour toucher de l'événement, vous pouvez mettre en oeuvre GoogleMap.OnMapClickListener et obtenir les coordonnées de ce paramètre. Espérons que cela aidera :)

1voto

Nguyen Thanh An Points 123

Voici le tutoriel de Google Maps API V2:

 public class MapPane extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.map_activity);
        GoogleMap map = ((MapFragment) getFragmentManager()
                .findFragmentById(R.id.map)).getMap();

        map.moveCamera(CameraUpdateFactory.newLatLngZoom(
                new LatLng(-18.142, 178.431), 2));

        // Polylines are useful for marking paths and routes on the map.
        map.addPolyline(new PolylineOptions().geodesic(true)
                .add(new LatLng(-33.866, 151.195))  // Sydney
                .add(new LatLng(-18.142, 178.431))  // Fiji
                .add(new LatLng(21.291, -157.821))  // Hawaii
                .add(new LatLng(37.423, -122.091))  // Mountain View
        );
    }
}
 

lien: https://developers.google.com/maps/documentation/android/

0voto

thainokio Points 1

http://net-tuts.blogspot.com/2014/04/google-map-draw-free-shape-on-map.html

c'est ma façon de faire ça, j'espère que cela vous aidera

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X