。
しかし、問題は、ユーザーがボタンをクリックしたときにmyLocationを取得する方法です。 私は経度と緯度を取得したい。Google Maps Android API v2で現在地を取得するにはどうすればよいですか? myLocation層が有効に設定することができ</p> <pre><code>mMap.setMyLocationEnabled(true) </code></pre><p>を使用
答えて
GoogleマップAPIの場所が機能するようになりました、でもあなたは、たとえば、という使用してそれを行うことができ、リスナーがあります。その後、
private GoogleMap.OnMyLocationChangeListener myLocationChangeListener = new GoogleMap.OnMyLocationChangeListener() {
@Override
public void onMyLocationChange(Location location) {
LatLng loc = new LatLng(location.getLatitude(), location.getLongitude());
mMarker = mMap.addMarker(new MarkerOptions().position(loc));
if(mMap != null){
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(loc, 16.0f));
}
}
};
とは、マップのリスナーを設定します。
mMap.setOnMyLocationChangeListener(myLocationChangeListener);
この地図が最初に場所を見つけると呼び出されます。
LocationServiceまたはLocationManagerはまったく必要ありません。
OnMyLocationChangeListener
インターフェイスは非推奨です。 代わりにcom.google.android.gms.location.FusedLocationProviderApiを使用してください。 FusedLocationProviderApiは改善された位置検索と電力使用を提供し、 "My Location"の青い点で使用されます。サンプルコードのサンプルアプリケーションフォルダ、または「Location Developer Guide」のMyLocationDemoActivityを参照してください。
良い解決策ですが、新しい場所を追加する前にマーカーを削除する必要があります。すべての場所の変更で、Googleマップは今新しいマーカー –
を追加しますが、問題はいくつかの遅延があるということです。 – jjLin
"このインタフェースは廃止予定です。 代わりにcom.google.android.gms.location.FusedLocationProviderApiを使用してください。" https://developers.google.com/android/reference/com/google/android/gms/maps/GoogleMap.OnMyLocationChangeListener – Eduardo
GoogleMap.getMyLocation()
を試しましたか?
残念ながら、更新情報は通知されません。報告によると、それも壊れています。 –
**更新:** "このメソッドは非推奨です。 代わりにcom.google.android.gms.location.LocationClientを使用してください。" https://developers.google.com/maps/documentation/android/location、http:// developer.android.com/google/play-services/location.html – samosaris
は常にあらゆる状況下nullを返した瞬間GoogleMap.getMyLocation()で、この
public class MyLocationListener implements LocationListener
{
@Override
public void onLocationChanged(Location loc)
{
loc.getLatitude();
loc.getLongitude();
String Text = “My current location is: ” +
“Latitud = ” + loc.getLatitude() +
“Longitud = ” + loc.getLongitude();
Toast.makeText(getApplicationContext(),Text, Toast.LENGTH_SHORT).show();
tvlat.setText(“”+loc.getLatitude());
tvlong.setText(“”+loc.getLongitude());
this.gpsCurrentLocation();
}
を試してみてください。
Googleには、私が知っている、Issue 40932とIssue 4644の2つのバグレポートがあります。
LocationListenerは、使用しようとしている新しいAPI内のLocationOverlayと同期していないため、以前のようにLocationListenerを実装すると正しくありません。
以前はPramod J GeorgeがリンクしていたVogellaのサイトのチュートリアルに続いて、古いGoogle Maps APIの使用法を説明します。
このようにして自分の場所を取得する方法を教えてくれないことをお詫びします。今のところ、LocationListenerが唯一の手段かもしれませんが、Googleが新しいAPI内で問題を修正する作業をしていると確信しています。
リンクを追加しないと申し訳ありませんが、私には担当者がいないため、StackOverlowは迷惑メールだと思います。 2月4日
----更新、2013 ----
Googleは問題がIssue 4644経由でGoogle MapsのAPIに次のアップデートで修正される予定と述べています。私は更新がいつ起こるかわからないが、いったんそれが再びこの投稿を編集するだろう。 4月10日に
----更新、2013 ----
Googleは問題がIssue 4644を介して固定されていると述べています。今はうまくいくはずです。ユーザーはまた、確認してボタンのコールにonClick-
void getCurrentLocation() {
Location myLocation = mMap.getMyLocation();
if(myLocation!=null)
{
double dLatitude = myLocation.getLatitude();
double dLongitude = myLocation.getLongitude();
Log.i("APPLICATION"," : "+dLatitude);
Log.i("APPLICATION"," : "+dLongitude);
mMap.addMarker(new MarkerOptions().position(
new LatLng(dLatitude, dLongitude)).title("My Location").icon(BitmapDescriptorFactory.fromBitmap(Utils.getBitmap("pointer_icon.png"))));
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(dLatitude, dLongitude), 8));
}
else
{
Toast.makeText(this, "Unable to fetch the current location", Toast.LENGTH_SHORT).show();
}
}
でこのメソッドをクリックしたときに
場所を取得するには、この
LocationManager service = (LocationManager) getSystemService(LOCATION_SERVICE);
Criteria criteria = new Criteria();
String provider = service.getBestProvider(criteria, false);
Location location = service.getLastKnownLocation(provider);
LatLng userLocation = new LatLng(location.getLatitude(),location.getLongitude());
getLastKnownLocationはnullを返す可能性がありますので、信頼性が十分ではありません – AFD
そのコードは私にとって役に立ちました。ありがとうございます –
これはLAstの既知の場所を取得しますが、現在の場所は取得しません。 –
を試してみてください
ことsetMyLocationEnabled
は、真のに設定されます。
これが動作するか試してみてください...
Mylocationは常にnullです – Sami
mMap.getMyLocation()は推奨されていません – sdelvalle57
現在の場所が表示されます。
mMap.setMyLocationEnabled(true);
Location userLocation = mMap.getMyLocation();
LatLng myLocation = null;
if (userLocation != null) {
myLocation = new LatLng(userLocation.getLatitude(),
userLocation.getLongitude());
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(myLocation,
mMap.getMaxZoomLevel()-5));
デバイス上のロケーションサービスがオンになっていることを確認してください。 これ以外の場所に関連する情報はありません。
これは私の作品、
map = ((MapFragment)getFragmentManager().findFragmentById(R.id.map)).getMap();
map.setMyLocationEnabled(true);
GoogleMap.OnMyLocationChangeListener myLocationChangeListener = new GoogleMap.OnMyLocationChangeListener() {
@Override
public void onMyLocationChange (Location location) {
LatLng loc = new LatLng (location.getLatitude(), location.getLongitude());
map.animateCamera(CameraUpdateFactory.newLatLngZoom(loc, 16.0f));
}
};
map.setOnMyLocationChangeListener(myLocationChangeListener);
}
私はちょうどこのコードは、 試してシンプルで機能的なスニペットが見つかりました:
public class MainActivity extends ActionBarActivity implements
ConnectionCallbacks, OnConnectionFailedListener {
...
@Override
public void onConnected(Bundle connectionHint) {
mLastLocation = LocationServices.FusedLocationApi.getLastLocation(
mGoogleApiClient);
if (mLastLocation != null) {
mLatitudeText.setText(String.valueOf(mLastLocation.getLatitude()));
mLongitudeText.setText(String.valueOf(mLastLocation.getLongitude()));
}
}}
は、ここでは、チュートリアルのリンクです:Getting the Last Known Location
条件は1つのみで、私はあなたが「私の場所を取得する」レイヤーボタンをタッチするのに十分な時間をユーザに許せば、それはヌル値を取得しませんでした。
この
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
== PackageManager.PERMISSION_GRANTED) {
mMap.setMyLocationEnabled(true);
} else {
// Show rationale and request permission.
}
受け入れ答えの作品を試すが、使用方法のいくつかは、今では、私は更新された方法でこの質問に答えるならば、それが最善だと思い廃止されました。
これが答えですので、ここでthis guide on google developers
から完全にステップバイステップガイドです:
は、地図の活動にご
onCreate
でMapActivity extends FragmentActivity implements OnMapReadyCallback, GoogleApiClient.OnConnectionFailedListener, GoogleApiClient.ConnectionCallbacks
をすべてこれを実装します:
あなたのonConnected
でprivate GoogleMap mMap; private Context context; private TextView txtStartPoint,txtEndPoint; private GoogleApiClient mGoogleApiClient; private Location mLastKnownLocation; private LatLng mDefaultLocation; private CameraPosition mCameraPosition; private boolean mLocationPermissionGranted; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_maps); context = this; mGoogleApiClient = new GoogleApiClient.Builder(this) .enableAutoManage(this /* FragmentActivity */, this /* OnConnectionFailedListener */) .addConnectionCallbacks(this) .addApi(LocationServices.API) .addApi(Places.GEO_DATA_API) .addApi(Places.PLACE_DETECTION_API) .build(); mGoogleApiClient.connect(); }
:
あなたonMapReady
でSupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() .findFragmentById(map); mapFragment.getMapAsync(this);
:
@Override public void onMapReady(GoogleMap googleMap) { mMap = googleMap; // Do other setup activities here too, as described elsewhere in this tutorial. // Turn on the My Location layer and the related control on the map. updateLocationUI(); // Get the current location of the device and set the position of the map. getDeviceLocation(); }
、これら二つは
onMapReady
のメソッドです:private void updateLocationUI() { if (mMap == null) { return; } if (ContextCompat.checkSelfPermission(this.getApplicationContext(), android.Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { mLocationPermissionGranted = true; } if (mLocationPermissionGranted) { mMap.setMyLocationEnabled(true); mMap.getUiSettings().setMyLocationButtonEnabled(true); } else { mMap.setMyLocationEnabled(false); mMap.getUiSettings().setMyLocationButtonEnabled(false); mLastKnownLocation = null; } } private void getDeviceLocation() { if (ContextCompat.checkSelfPermission(this.getApplicationContext(), android.Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { mLocationPermissionGranted = true; } if (mLocationPermissionGranted) { mLastKnownLocation = LocationServices.FusedLocationApi .getLastLocation(mGoogleApiClient); } // Set the map's camera position to the current location of the device. float DEFAULT_ZOOM = 15; if (mCameraPosition != null) { mMap.moveCamera(CameraUpdateFactory.newCameraPosition(mCameraPosition)); } else if (mLastKnownLocation != null) { mMap.moveCamera(CameraUpdateFactory.newLatLngZoom( new LatLng(mLastKnownLocation.getLatitude(), mLastKnownLocation.getLongitude()), DEFAULT_ZOOM)); } else { Log.d("pouya", "Current location is null. Using defaults."); mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(mDefaultLocation, DEFAULT_ZOOM)); mMap.getUiSettings().setMyLocationButtonEnabled(false); } }
これは非常に速く、滑らかで効果的です。これが役に立ったらいいですか
FusedLocationApi
というよりOnMyLocationChangeListener
が廃止されました。
private LocationRequest mLocationRequest;
private GoogleApiClient mGoogleApiClient;
private LocationListener mLocationListener;
定義方法:
まず、これらの3つの変数宣言
private void initGoogleApiClient(Context context)
{
mGoogleApiClient = new GoogleApiClient.Builder(context).addApi(LocationServices.API).addConnectionCallbacks(new GoogleApiClient.ConnectionCallbacks()
{
@Override
public void onConnected(Bundle bundle)
{
mLocationRequest = LocationRequest.create();
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
mLocationRequest.setInterval(1000);
setLocationListener();
}
@Override
public void onConnectionSuspended(int i)
{
Log.i("LOG_TAG", "onConnectionSuspended");
}
}).build();
if (mGoogleApiClient != null)
mGoogleApiClient.connect();
}
private void setLocationListener()
{
mLocationListener = new LocationListener()
{
@Override
public void onLocationChanged(Location location)
{
String lat = String.valueOf(location.getLatitude());
String lon = String.valueOf(location.getLongitude());
Log.i("LOG_TAG", "Latitude = " + lat + " Longitude = " + lon);
}
};
LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, mLocationListener);
}
private void removeLocationListener()
{
LocationServices.FusedLocationApi.removeLocationUpdates(mGoogleApiClient, mLocationListener);
}
initGoogleApiClient()
セットアップ位置変更リスナーに使用さGoogleApiClient
オブジェクトsetLocationListener()
を初期化するために使用されremoveLocationListener()
は、メモリリークの問題を回避するために最後にリスナー(mLocationListener
)を削除することを忘れないでください:)作業コードを開始するために、リスナーに
コールinitGoogleApiClient
方法を削除するために使用されます。
- 1. 私は、現在のディレクトリの親ディレクトリについてどのように</p> <pre><code>$CurrentDir = Dir.pwd </code></pre> <p>により、現在のディレクトリを取得することができます理解ルビー
- 2. THREE.Camera.prototype.lookAt</ <() -</ <はどういう意味ですか?
- 3. Eigen 3を使用して「<array-of-true-or-false> = <array><= <scalar>」と表現するにはどうすればよいですか?
- 4. zeppelinでspark scala DataFrameをsparkRにバインドするにはどうすればいいですか? <pre><code>%spark z.put("myDF", myDF) </code></pre> <p>とspark.rから</p>はそれを得ることができなかっ:
- 5. magentoバックエンドのconfig xmlデータを取得するにはどうすればよいですか?私は別のモジュールから、このラベルの値を取得したい</p> <pre><code><config> <sections> <dev> <groups> <my_module> <label>... </code></pre> <p>:
- 6. はどのように</p> <pre><code>has_one :company </code></pre> <p>私の要件は、ユーザーがページをサインアップするときに新しい<code>company</code>フォームにリダイレクトするということである
- 7. List <Hashtable <String、List <String>>をIntentにブロードキャストするにはどうすればいいですか?
- 8. イメージをパックするにはどうすればいいですか?どのようにすることができ <pre><code>img_l = pygame.image.load(os.path.join('data', 'img.png')) screen.blit(img_l, (0, 0)) </code></pre> <p></p> ... -Pygame -PyInstaller
- 9. 名前付きキャプチャグループが存在するかどうかを確認する方法は?だから私は<code><somename></code>が存在するかどうかを知りたい</p> <pre><code>@"Something\(\d+, ""(.+)""(, .{1,5}, \d+, (?<somename>\d+)?\)," </code></pre> <p>:私の正規表現で
- 10. Syncano AndroidのSDKには - ユーザーが、私はユーザーがログインしている場合、私がチェックすることができますどのように</p> <pre><code>Syncano.getInstance().loginSocialUser() </code></pre> <p>を使用してログイン
- 11. <iframe>は</p> <p>私は</p> <p>ビデオ、</p> <p>私は再生ボタンをクリックすることができ、埋め込みを見ることができ、ユーチューブのビデオが動作するように-seemsブト
- 12. PHP <?= <?php echo違いは何ですか?どちらを使うのが良いですか?私はまだ <pre><code><?Php echo ''; </code></pre> <p>適切な、より良いものを使用することです</p>を使用していながら
- 13. 私は<code>retain</code>と<code>release</code>を使用することができないながら<code>copy</code>(キーワード)ARCで使用することができますARC</p> <p>のキーワード<code>copy</code>の役割は何ARC
- 14. ページは私が</p> <pre><code>MEDIA_ROOT = '/peaceroot/www/media/' MEDIA_URL = '/media/' </code></pre> <p>以下のよう<code>settings.py</code>に設定されていることをメディアフォルダ(<code>'/peaceroot/www/media/'</code>)にファイルをアップロードすることができるよ404個のDjangoのメディアファイル
- 15. は、私は開始日<em>(最初ControlParameter)</em>と最後の日付<em>(第2 ControlParameter)現在の月の</em>に次のコードで<code>DefaultValue</code>さんを設定するにはどうすればよい
- 16. <<< EODをPHPで使用するとは何ですか?
- 17. LINQ ToListがここで使用されないのはなぜですか? <code>source</code>が<code>IEnumerable<T></code>ある</p> <pre><code>using(var iterator = source.GetEnumerator()) {...} </code></pre> <p>:
- 18. hbaseシェルにタブがある行キーを指定するにはどうすればよいですか?例えば</p> <pre><code>item_id <tab> location </code></pre> <p>::私たちの無限の知恵で
- 19. 私は、それはperlの</p> <p>私がいたを使用して行うことができますどのように</p> <pre><code>String sql = Query1; </code></pre> <p>のようにそれを交換したい行</p> <pre><code>String sql="select * from "+ "emp_data"; </code></pre> <p>のように私が持っている私のファイルでのPerl
- 20. MongooseでMongoDBコレクションのサイズ(バイト)を取得するにはどうすればよいですか?私はバイト単位でフル対応するコレクションのサイズを取得するにはどうすればよい</p> <pre><code>mongoose = require('mongoose') Products = mongoose.model('Products') </code></pre> <p>:
- 21. 複数の制約と一致を持つレコードをカウントするクエリを作成するにはどうすればよいですか?</p> <ol> <li>ファイル</li> <li>タグ</li> <li>join_File_Tags</li> <li>プロファイル</li> <li>join_Profile_Tags</li> </ol> <p>プロファイルとユーザーが見ることができるファイルのテーブルが決定join_Profile_Tags:
- 22. 投稿、コメント、ユーザー、投票モデルがすべて設定されています。ユーザーを投票できるようにするにはどうすればいいですか? <strong>ポスト</strong>、<strong>コメント</strong>、<strong>ユーザー</strong>と<strong>投票</strong>:
- 23. に</p> <p>(<strong>doc.pdf</strong>が<strong>PHPスクリプト</strong>と同じディレクトリに存在している)私は</p> <pre><code>$pageCount = $pdf->setSourceFile("doc.pdf"); </code></pre> <p>から<em>PDFパス</em>を設定しようとしていますFPDF
- 24. jQueryを使用してイメージ名を取得するには?どのように私は<code>blue</code>データを得ることができ、</p>のjQueryを使用して <pre><code><img src='static/images/banner/blue.jpg' /> </code></pre> <p>:
- 25. オブジェクトリテラルのプロパティに直接アクセスすると、SyntaxErrorがスローされるのはなぜですか? <code>{}</code></p> <pre><code>{}.a </code></pre> <p>が、私はエラーを取得するには、オブジェクトのプロパティ<code>a</code>にアクセスしようとすると
- 26. jqueryのは、私がここで</p> <pre><code>onFocus:function(){ //retrieve extra params } </code></pre> <p>などの添付イベント となりますが、プラグインへのリンクです</p> <pre><code>q=myseed&filter=1,2,34 </code></pre> <p>より良いようなクエリに追加のパラメータを設定することができますどのように余分なパラメータ
- 27. 兄弟ディレクトリからPythonスクリプトをインポートするにはどうすればよいですか?私はbar.py foo.pyにインポートするにはどうすればよい</p> <pre><code>parent_dir/ foo_dir/ foo.py bar_dir/ bar.py </code></pre> <p>:
- 28. 列挙型の整数値を取得するにはどうすればよいですか?</p> <pre><code>enum Number { One = 1, Two = 2, Three = 3, Four = 4, } </code></pre> <p>が、どのような目的のために:
- 29. <vector>をAndroidの<shape>に入れるにはどうすればよいですか?
- 30. は、どのように私は<code>string</code>あるこの</p> <pre><code>var alldest = cc.returnallfullDestinations(mainElement).Split('|'); </code></pre> <p><code>returnallfullDestionations</code>のようなデータを取得していますC#
何が必要ですか?ユーザーが「Get My Location」のようなボタンをクリックしたときに、ユーザーが画面に触れるとき、またはユーザーの場所が必要なときにその場所を必要とするか? –