|
|
|
Android อยากให้กล้องของ Google Map Zoom ในระยะกึ่งกลางสองจุดบนแผนที่ครับ ทำไงครับ |
|
|
|
|
|
|
|
ลองดูนะครับ!!
แก้ไขไฟล์ res/layout/activity_main.xml ก่อน
Code (XML)
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<fragment
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.google.android.gms.maps.SupportMapFragment"/>
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:gravity="center"
android:text="TextView" />
</RelativeLayout>
แล้วก็แก้ไขไฟล์ MainActivity.java โดยเพิ่ม event OnCameraChangeListener
Code (Android-Java)
//MainActivity.java
package utehn.dev.map;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GooglePlayServicesUtil;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.GoogleMap.OnCameraChangeListener;
import com.google.android.gms.maps.GoogleMap.OnInfoWindowClickListener;
import com.google.android.gms.maps.GoogleMap.OnMapClickListener;
import com.google.android.gms.maps.GoogleMap.OnMapLongClickListener;
import com.google.android.gms.maps.GoogleMap.OnMarkerClickListener;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.BitmapDescriptor;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.CameraPosition;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.Marker;
import com.google.android.gms.maps.model.MarkerOptions;
public class MainActivity extends FragmentActivity implements
OnCameraChangeListener,
OnMapClickListener,
OnMapLongClickListener,
OnInfoWindowClickListener{//implement interface ที่ต้องการใช้งานไว้ก่อน
private GoogleMap myMap;
private TextView tvCenter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tvCenter = (TextView)findViewById(R.id.textView1);
SupportMapFragment mySupportMapFragment =
(SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map);
myMap = mySupportMapFragment.getMap();
myMap.setOnMapClickListener(this);
myMap.setOnMapLongClickListener(this);
myMap.setOnInfoWindowClickListener(this);
myMap.setOnCameraChangeListener(this);
myMap.setMyLocationEnabled(true);
// ตั้งค่า postion ของ map และระดับการ zoom
myMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(15,100),8));
// การ add marker แบบต่างๆ
myMap.addMarker(new MarkerOptions()
.position(new LatLng(15.1123,100.05612))
.title("Nomal Marker")
.snippet("content"));
myMap.addMarker(new MarkerOptions()
.position(new LatLng(15.4231,100.45612))
//.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE))
//.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE))
//.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN))
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_VIOLET))
.title("Nomal Color Marker")
.snippet("content"));
myMap.addMarker(new MarkerOptions()
.position(new LatLng(15,100.45612))
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN))
.title("Nomal Green Marker")
.snippet("content"));
myMap.addMarker(new MarkerOptions()
.position(new LatLng(15.55234,100))
.icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_launcher))
.title("Custom Marker")
.snippet("content"));
}// end onCreate
@Override
protected void onResume() {
super.onResume();
// เชคว่า มี googleplay service อยู่หรือไม่
final int RQS_GooglePlayServices = 1;
int resultCode =
GooglePlayServicesUtil.isGooglePlayServicesAvailable(getApplicationContext());
if (resultCode == ConnectionResult.SUCCESS){
Toast.makeText(getApplicationContext(),
"GooglePlayServices is Available",
Toast.LENGTH_LONG).show();
}else{
GooglePlayServicesUtil.getErrorDialog(resultCode, this, RQS_GooglePlayServices);
}
} // end onResume
@Override
public void onMapLongClick(LatLng point) {// LongClick ที่ Map
// คำสั่ง add Marker
myMap.addMarker(new MarkerOptions().position(point).title(point.toString()));
Toast.makeText(getApplicationContext(),
"เพิ่ม Marker สำเร็จ",
Toast.LENGTH_LONG).show();
}
@Override
public void onMapClick(LatLng point) { // Click ที่ map
// ล้าง overley บน map
//myMap.clear();
// เลื่อนตำแหน่งที่ถูก click มาตรงกลาง
myMap.animateCamera(CameraUpdateFactory.newLatLng(point));
}
@Override
public void onInfoWindowClick(Marker marker) {// คลิกที่ infowindow ของ marker แต่ละตัว
marker.hideInfoWindow();
Toast.makeText(getApplicationContext(),
marker.getTitle()+"\n"+marker.getPosition().toString(),
Toast.LENGTH_LONG).show();
}
@Override
public void onCameraChange(CameraPosition point) {// เหตุการณ์ เมื่อเลื่อนแผนที่
LatLng center = point.target;
// แสดงพิกัดบน TextView
tvCenter.setText(center.latitude+", "+center.longitude);
}
}// end MainClass
เมื่อทำการเลื่อนแผนที่ ค่าพิกัด ก็จะเปลี่ยนแปลงไปเรื่อยๆครับ
credit : [email protected]
|
ประวัติการแก้ไข 2013-05-13 09:59:21 2013-05-13 09:59:56
|
|
|
|
Date :
2013-05-13 09:58:47 |
By :
SponG_Gy |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 00
|