package cn.ccsu.ShareFV;
import java.util.ArrayList;
import java.util.List;
import java.util.Vector;
import cn.ccsu.ShareFV.R;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import cn.ccsu.netdiscovery.Receive;
import com.baidu.mapapi.BMapManager;
import com.baidu.mapapi.map.ItemizedOverlay;
import com.baidu.mapapi.map.MapController;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.OverlayItem;
import com.baidu.mapapi.map.PopupClickListener;
import com.baidu.mapapi.map.PopupOverlay;
import com.baidu.platform.comapi.basestruct.GeoPoint;
public class MapActivity extends Activity implements Runnable{
BMapManager mBMapMan = null;
MapView mMapView = null;
Receive receive;
Thread receiveThread;
Vector ipVector;
String[] ip;
String[] name;
int ipIndex=0;
GeoPoint[] point;
List<OverlayItem> overlayItemList=new ArrayList<OverlayItem>();
private ProgressDialog progressDialog = null;
private MapController mMapController;
private OverlayItem mCurItem = null;
private PopupOverlay pop = null;
private TextView popupText = null;
private View viewCache = null;
private View popupInfo = null;
private View popupLeft = null;
private View popupRight = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
mBMapMan=new BMapManager(getApplication());
mBMapMan.init("69EEEACEB9CCF6300612CD97EA35A18D3E1542D7", null);
//ע�⣺��������setContentViewǰ��ʼ��BMapManager������ᱨ��
setContentView(R.layout.map);
mMapView=(MapView)findViewById(R.id.bmapsView);
mMapView.setBuiltInZoomControls(true);
mMapController = mMapView.getController();
// �õ�mMapView�Ŀ���Ȩ,�����������ƺ�����ƽ�ƺ�����
mMapController.setZoom(18);//���õ�ͼzoom����
progressDialog = ProgressDialog.show(MapActivity.this, "���Ե�...", "��ȡ������...", true);
receive=new Receive();
receiveThread=new Thread(receive);
receiveThread.start();
new Thread(this).start();
}
@Override
protected void onDestroy(){
mMapView.destroy();
if(mBMapMan!=null){
mBMapMan.destroy();
mBMapMan=null;
}
super.onDestroy();
}
@Override
protected void onPause(){
mMapView.onPause();
if(mBMapMan!=null){
mBMapMan.stop();
}
super.onPause();
}
@Override
protected void onResume(){
mMapView.onResume();
if(mBMapMan!=null){
mBMapMan.start();
}
super.onResume();
}
//����Recive��ipVector������
public void initdata()
{
ipVector=receive.ipVector;
Drawable mark= getResources().getDrawable(R.drawable.points);
OverlayLocation itemOverlay = new OverlayLocation(mark, mMapView);
mMapView.getOverlays().clear();
mMapView.getOverlays().add(itemOverlay);
point=new GeoPoint[ipVector.size()];
ip=new String[ipVector.size()];
name=new String[ipVector.size()];
if(ipVector.size()>0)
{
GeoPoint p =new GeoPoint((int)(Double.parseDouble(ipVector.get(0).toString().split("and")[1])* 1E6),(int)(Double.parseDouble(ipVector.get(0).toString().split("and")[2]) * 1E6));
//�ø����ľ�γ�ȹ���һ��GeoPoint����λ���� (�� * 1E6)
mMapController.setCenter(p);//���õ�ͼ���ĵ�
for(int i=0;i<ipVector.size();i++)
{
point[i]=new GeoPoint((int) (Double.parseDouble(ipVector.get(i).toString().split("and")[1])* 1E6), (int) (Double.parseDouble(ipVector.get(i).toString().split("and")[2]) * 1E6));
OverlayItem item1 = new OverlayItem(point[i],ipVector.get(i).toString().split("and")[3],"");
ip[i]=ipVector.get(i).toString().split("and")[0];
name[i]=ipVector.get(i).toString().split("and")[3];
overlayItemList.add(item1);
}
itemOverlay.addItem(overlayItemList);
mMapView.refresh();
}
else
{
// Toast.makeText(this, "û��ɨ�赽����",Toast.LENGTH_LONG).show();
}
viewCache = getLayoutInflater().inflate(R.layout.custom_text_view, null);
popupInfo = (View) viewCache.findViewById(R.id.popinfo);
popupText =(TextView) viewCache.findViewById(R.id.textcache);
/**
* ����һ��popupoverlay
*/
PopupClickListener popListener = new PopupClickListener(){
@Override
public void onClickedPopup(int index) {
if ( index == 0){
Intent intent = new Intent(MapActivity.this, PlayVideo.class);
intent.putExtra("hostip", ip[ipIndex]);
startActivity(intent);
}
}
};
pop = new PopupOverlay(mMapView,popListener);
}
class OverlayLocation extends ItemizedOverlay<OverlayItem> {
//��MapView����ItemizedOverlay
public OverlayLocation(Drawable mark,MapView mapView){
super(mark,mapView);
}
protected boolean onTap(int index) {
//�ڴ˴���item����¼�
OverlayItem item = getItem(index);
mCurItem = item ;
ipIndex=index;
popupText.setText(getItem(index).getTitle());
Bitmap[] bitMaps={
getBitmapFromView(popupInfo),
};
pop.showPopup(bitMaps,item.getPoint(),32);
return true;
}
public boolean onTap(GeoPoint pt, MapView mapView){
//�ڴ˴���MapView�ĵ���¼��������� trueʱ
if (pop != null){
pop.hidePop();
}
super.onTap(pt,mapView);
return false;
}
}
public Bitmap getBitmapFromView(View view) {
view.destroyDrawingCache();
view.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED),
View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
view.setDrawingCacheEnabled(true);
Bitmap bitmap = view.getDrawingCache(true);
return bitmap;
}
@Override
public void run() {
// TODO Auto-generated method stub
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
initdata();
progressDialog.dismiss();
}
}