2013-05-29 35 views
9

Tôi đang làm việc trên một ứng dụng Android sử dụng API Google Maps phiên bản 2 và muốn đánh dấu một khu vực cụ thể trên bản đồ với một màu nhất định trên một sự kiện nhấp chuột. Ví dụ: khi tôi nhấp vào Ấn Độ, khu vực bao phủ quốc gia phải có màu xanh lục.cách thay đổi màu sắc của một khu vực cụ thể trên bản đồ api v2 của Google trong android

Tôi đã sử dụng GroundOverlay nhưng yêu cầu hình ảnh hiển thị nội dung nào đó trên bản đồ, dẫn đến khu vực màu không phù hợp. Vì cả bản đồ và hình ảnh đều có hình dạng riêng, nên nó không bao gồm khu vực chính xác.

i want like this

bất cứ ai có thể vui lòng cho tôi biết làm thế nào để tô màu cho Android Google Maps bản đồ API v2 chính xác hơn?

+0

có bạn tìm thấy giải pháp cần thiết của bạn. xin vui lòng gửi như một câu trả lời. Tôi cần cái này. thanks –

+0

Tôi cũng muốn làm như nó nhưng không tìm thấy bất kỳ giải pháp – Amish

Trả lời

3

Giống như MaciejGórski cho biết bạn phải sử dụng đa giác với sự kiện Onclick của Bản đồ. Tôi đã dành chút thời gian cho bạn và đưa ra giải pháp. Bây giờ tôi chỉ vẽ đa giác sau 3 điểm bạn có thể sửa đổi thành đáp ứng nhu cầu của bạn. Và cũng thay đổi màu (Sử dụng màu RGBA để làm nổi bật khu vực bên trong polygone).

package com.mzubair.mapkey; 

import android.graphics.Color; 
import android.os.Bundle; 
import android.support.v4.app.FragmentActivity; 
import android.view.Menu; 
import android.widget.TextView; 

import com.google.android.gms.maps.GoogleMap; 
import com.google.android.gms.maps.GoogleMap.OnMapClickListener; 
import com.google.android.gms.maps.GoogleMap.OnMapLongClickListener; 
import com.google.android.gms.maps.SupportMapFragment; 
import com.google.android.gms.maps.model.LatLng; 
import com.google.android.gms.maps.model.Polygon; 
import com.google.android.gms.maps.model.PolygonOptions; 

public class MainActivity extends FragmentActivity implements OnMapClickListener, OnMapLongClickListener { 

private GoogleMap googleMap; 
private TextView tapTextView; 
private PolygonOptions polygonOptions; 
private Polygon polygon; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    tapTextView = (TextView) findViewById(R.id.textView1); 
    polygonOptions = new PolygonOptions(); 


    // Getting reference to the SupportMapFragment of activity_main.xml 
    SupportMapFragment fm = (SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map); 

       // Getting GoogleMap object from the fragment 
       googleMap = fm.getMap(); 

       setUpMap(); 

} 

private void setUpMap() //If the setUpMapIfNeeded(); is needed then... 
    { 
     googleMap.setOnMapClickListener((OnMapClickListener) this); 
     googleMap.setOnMapLongClickListener((OnMapLongClickListener) this); 
    } 

@Override 
    public void onMapClick(LatLng point) { 
     tapTextView.setText("tapped, point=" + point); 
     polygonOptions.add(point); 
     countPolygonPoints(); 
    } 

    @Override 
    public void onMapLongClick(LatLng point) { 
     tapTextView.setText("long pressed, point=" + point); 
    } 
    public void countPolygonPoints(){ 
     if(polygonOptions.getPoints().size()>3){ 



      polygonOptions.strokeColor(Color.RED); 
      polygonOptions.strokeWidth((float) 0.30); 
      polygonOptions.fillColor(Color.BLUE); 
      polygon = googleMap.addPolygon(polygonOptions); 

     } 
    } 

@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; 
} 

}

Đây là kết quả sau khi sử dụng mã này.

Đọc chi tiết Post and download the Demo App Here

enter image description here

+0

là nó có thể để có được ranh giới của một quốc gia cụ thể? Ví dụ khi tôi bấm vào Ấn Độ tôi cần phải màu ra toàn bộ India.is nó có thể? @Neo – Venkat

+0

đọc câu trả lời này http://stackoverflow.com/a/14385528/1174987 – Neo

0

Bạn cần thu thập tất cả các điểm tạo hình này làm List của LatLngs và sử dụng Polygon.

Các vấn đề liên quan