Android Google Maps API V2 Polyline

时间:2014-02-27 12:08:07

标签: android google-maps

我是第一次在Android上工作,而且我对它不太熟悉。

我要问的是如何让我的应用程序在地图上的任何位置制作折线,以便绘制多边形。

到目前为止我所知道的是我必须创建一个折线对象才能执行此操作,我需要为折线功能创建一个LatLng点列表。这是我被困的地方。我不知道怎么从这里开始。

我已经查看了示例代码和Google APIv2上的文档记录我会逐步协助我如何让我的应用程序绘制可以连接成多边形的折线

以下是我的代码:

import java.util.List;
import java.util.ArrayList;
import com.google.android.gms.maps.model.Polyline;
import com.google.android.gms.maps.model.PolylineOptions;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.location.LocationClient;
import com.google.android.gms.maps.GoogleMap.OnMapClickListener;
import com.google.android.gms.maps.GoogleMap.OnMapLongClickListener;
import com.google.android.gms.maps.SupportMapFragment;
import android.os.Bundle;
import android.app.Activity;
import android.graphics.Color;
import android.view.Menu;
import android.support.v4.app.FragmentActivity;

public class MainActivity extends Activity {

private GoogleMap mMap;


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

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}


public void draw(){
    //k is the list of LatLng

    Polyline draw = mMap.addPolyline(new PolylineOptions()
            .add(k)
            .width(5)
            .color(Color.BLUE));

}

}

以下是我最终希望拥有的一些图片enter image description here

enter image description here

enter image description here

这是我的新代码,但它一直给我一个关于mMap.setOnclicklistener的错误;当我运行它时,应用程序无法打开。

public class MainActivity extends Activity {

private GoogleMap mMap;


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

    initimap();
    mMap.setOnMapLongClickListener(myOnMapLongClickListener);

}

private void initimap() {

    mMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();

    mMap.setOnclicklistener;
}

OnMapLongClickListener myOnMapLongClickListener =
           new OnMapLongClickListener(){

            @Override
            public void onMapLongClick(LatLng point) {
             mMap.addMarker(new MarkerOptions()
                  .position(point)
                  .title(point.toString()));

             Location myLocation = mMap.getMyLocation();
             if(myLocation == null){
              Toast.makeText(getApplicationContext(), 
                "My location not available", 
                Toast.LENGTH_LONG).show();
             }else{
              PolylineOptions polylineOptions = new PolylineOptions();
              polylineOptions.add(point);
              polylineOptions.add(
                new LatLng(myLocation.getLatitude(), myLocation.getLongitude()));
              mMap.addPolyline(polylineOptions);
             }
            }

         };



@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

}

有人可以看看并解释发生了什么吗?

2 个答案:

答案 0 :(得分:1)

对于你的例子,它将是这样的。

Polygon polygon = map.addPolygon(new PolygonOptions()
.add(new LatLng(22.154975,113.729675), 
     new LatLng(22.265587,113.822372), 
     new LatLng(22.188677,113.953521), 
     new LatLng(22.047459,113.904769))
.strokeWidth(5)
.strokeColor(Color.BLUE);

答案 1 :(得分:0)

试试这个:

    public class MainActivity extends Activity{

 private GoogleMap myMap;

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



        myMap= ((SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map1)).getMap();


        myMap.setMyLocationEnabled(true);
        myMap.setOnMapLongClickListener(myOnMapLongClickListener);

    }

 OnMapLongClickListener myOnMapLongClickListener =
   new OnMapLongClickListener(){

    @Override
    public void onMapLongClick(LatLng point) {
     myMap.addMarker(new MarkerOptions()
          .position(point)
          .title(point.toString()));

     Location myLocation = myMap.getMyLocation();
     if(myLocation == null){
      Toast.makeText(getApplicationContext(), 
        "My location not available", 
        Toast.LENGTH_LONG).show();
     }else{
      PolylineOptions polylineOptions = new PolylineOptions();
      polylineOptions.add(point);
      polylineOptions.add(
        new LatLng(myLocation.getLatitude(), myLocation.getLongitude()));
      myMap.addPolyline(polylineOptions);
     }
    }

 };

}

xml布局

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/rl_Map"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/rluserdetails"
android:layout_centerHorizontal="true" >

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