android開発 googlemap 助けて
http://tryworks-design.com/?p=1530
上のサイトのサンプルコードを参考にアプリを作成中なのですがコンパイルエラーが出てうまく動きません。70行目の
LatLng position2 = new LatLng(toLatitude,toLongitude);
でエラーが出ました。
toLatitude,toLongitudeについて前で何も定義していないからだと思うのですが・・・何をしたらいいのかわかりません。
私が書いたMainActivity.javaを下に記しますので間違っているところを教えてください。
package com.tryworks_design;
import com.google.android.gms.maps.GoogleMap;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.content.Context;
import android.util.Log;
import android.view.Menu;
import android.support.v4.app.FragmentActivity;
import com.google.android.gms.maps.CameraUpdate;
import com.google.android.gms.maps.CameraUpdateFactory;
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.LatLng;
import com.google.android.gms.maps.model.LatLngBounds;
import com.google.android.gms.maps.model.MarkerOptions;
public class MainActivity extends FragmentActivity implements LocationListener{
private GoogleMap gMap;
private static final String TAG = "myTag";
private LocationManager locationManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//FragmentManagerを取得し、MapFragmentを取得。それをgetMap()する事で、GoogleMapオブジェクトを取得する。
gMap = ((SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
//現在値をリアルタイムで表示する。リアルタイムなため、常にGPSがONになってしまう。
gMap.setMyLocationEnabled(true);
locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
// 利用できるGPSを選択してプロバイダを取得
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, this);
}
@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;
}
//マップの位置情報が取得出来た時に呼び出されるメソッド
@Override
public void onLocationChanged(Location location) {
Log.d(TAG,"位置情報が取得出来ました。");
//緯度を取得
double myLatitude = location.getLatitude();
//経度を取得
double myLongitude = location.getLongitude();
//LatLngBoundは南西地点と北東地点から矩形領域を作成する。
LatLngBounds.Builder builder = new LatLngBounds.Builder();
//LatLngに地理的な座標の点、つまり緯度と経度を格納
LatLng position = new LatLng(myLatitude,myLongitude);
//positionの値をbuilderに格納
builder.include(position);
//LatLngに地理的な座標の点、つまり緯度と経度を格納
LatLng position2 = new LatLng(toLatitude,toLongitude);
//positionの値をbuilderに格納
builder.include(position2);
//newLatLngBoundsで指定された緯度/経度の境界が最大限のズームレベルで画面の中央に表示されるようなカメラを変換CameraUpdateを返す。
//第二引数に値を設定する事で、画面一杯に表示された目的地、現在値にパディングを与える事が出来る。
//builder.build()でincludeした2点のポイント(目的地と現在値)の情報が格納されている。
CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(builder.build(),70);
//マップの視点を切り替える。今回の場合はcuの値つまり、2点間の中心にカメラの視点が切り替わる。
gMap.moveCamera(cu);
MarkerOptions options = new MarkerOptions();
options.position(position2);
options.title("現在地");
options.snippet(position2.toString());
BitmapDescriptor icon = BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE);
options.icon(icon);
gMap.addMarker(options);
//目的地取得が終了したら、GPSによる検索終了する。
locationManager.removeUpdates(this);
}
@Override
public void onProviderDisabled(String provider) {}
@Override
public void onProviderEnabled(String provider) {}
@Override
public void onStatusChanged(
補足
もう少し詳しく教えて下さい。 あるActivityからサービスをbindして呼び出しています。そのサービスクラスの中に、getSystemServiceを含むメソッドがあり、onCreate部で、それを呼び出してもエラーになりません。 しかし、Activityから直接そのメソッドを呼ぶとエラーになってしまいます。この違いがわからなくて困って居ます。 > 例えば、コンストラクタでLocationManagerを引数として渡すようにするなどしてはいかがでしょうか。 これはどのように記述するのでしょうか?