我想在德黑兰为自行车站制作一个Android应用程序。为此,我需要在地图上显示特定和静态位置,如下所示:
我从Github尝试了几个库,但没有用。我还添加了一个额外的位置(double latitude1 = 35.747394; double longitude1 = 51.267577;)
,但地图标记未显示在地图上。
如果有人能帮助我,我会很感激。
这是我的代码:
MainActivity.java
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.Uri;
import android.support.v4.app.FragmentActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapFragment;
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.MarkerOptions;
import com.google.android.gms.maps.MapFragment;
import com.playpersia.bicyclemap.R;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
public class MapsActivity extends FragmentActivity {
double latitude1 = 35.747394;
double longitude1 = 51.267577;
// Google Map
private GoogleMap googleMap;
/**
* Called when the activity is first created.
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_map);
Uri gmmIntentUri = Uri.parse("geo:35.694677, 51.394871");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); //***Change Here***
mapIntent.setPackage("com.google.android.apps.maps");
if (mapIntent.resolveActivity(getPackageManager()) != null) {
startActivity(mapIntent);
finish();
}
try {
initilizeMap();
MarkerOptions markerOptions1 = new MarkerOptions().position(
new LatLng(latitude1, longitude1)).title("بوستان جوانمردان");
googleMap.addMarker(markerOptions1);
} catch (Exception e) {
e.printStackTrace();
}
}
@
Override
protected void onResume() {
super.onResume();
initilizeMap();
}
private void initilizeMap() {
if (googleMap == null) {
SupportMapFragment mapFragment = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(
R.id.map));
if (googleMap != null) {
Toast.makeText(getApplicationContext(), "خطا", Toast.LENGTH_LONG).show();
}
}
}
}
答案 0 :(得分:1)
查看Google Places API文档。它允许您查询各种类别的地点信息,例如:机构,重要的兴趣点,地理位置等。您可以通过邻近或文本字符串搜索位置。
使用Nearby Search可以搜索指定区域内的地点。您可以通过提供关键字或指定要搜索的地点类型来优化搜索请求。这是list of supported types。
以下格式的示例HTTP网址:
https://maps.googleapis.com/maps/api/place/nearbysearch/output?parameters
其中
output
可以是以下任一值:
- 的输出
json
(推荐)表示JavaScript Object Notation(JSON)xml
表示输出为XML
以下示例是澳大利亚悉尼一个500米半径范围内'transit_station'类型地点的搜索请求:
https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=-33.8670522,151.1957362&radius=500&type=transit_station&key=YOUR_API_KEY
检查这些相关链接和tutorial:
希望这有帮助!
答案 1 :(得分:0)
我希望您尝试在自己的应用中展示地图。如果您阅读了您的日志猫,您会发现错误。 googleMap变量未初始化。因此,如果添加标记,它将抛出空指针异常。你应该使用getMapAsync回调来初始化googleMap变量然后你可以添加标记。如果你的地图显示并添加标记不起作用,这将有效。如果map没有显示api键的问题。更正并删除意图代码并尝试此操作。