- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是一个公交车跟踪应用程序,可从 Firebase 检索位置坐标并在 map 上显示。我设置了谷歌地图并从控制台获取了 api key 。当我在模拟器中使用它时它可以工作,但当我将它上传到 Playstore 时它不起作用。
它从 MainActivity 开始,用户在其中选择公交车号码,从那里用户被带到显示公交车位置的 map Activity 。从主 Activity 到 map Activity 的数据是使用 Intent 完成的。
我无法弄清楚为什么从 Playstore 下载 map 时无法加载 map ,因为它在与模拟器或有线连接设备一起使用时可以完美运行。
主要 Activity
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private
RadioGroup route;
public static final String ARG_FROM_MAIN = "arg";
private FirebaseAuth mAuth;
private FirebaseDatabase mDatabase = FirebaseDatabase.getInstance();
private DatabaseReference mDatabaseReference = mDatabase.getReference().child("Locations");
public String someVariable;
TextView numberbs;
Button getLocationBtn;
private Button btnSignOut;
Button busb1;
Button busb2;
Button busb3;
Button busb4;
Button busb5;
Button busb6;
Button busb7;
Button busb8;
Button busb9;
Button busb10;
Button busb11;
Button busb12;
Button busb13;
Button busb14;
Button busb15;
Button busb16;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
numberbs = findViewById(R.id.busnotext);
btnSignOut = findViewById(R.id.signoutbtn);
getLocationBtn = findViewById(R.id.getLocationBtn);
numberbs = findViewById(R.id.busnotext);
busb1 = findViewById(R.id.busbtn1);
busb2 = findViewById(R.id.busbtn2);
busb3 = findViewById(R.id.busbtn3);
busb4 = findViewById(R.id.busbtn4);
busb5 = findViewById(R.id.busbtn5);
busb6 = findViewById(R.id.busbtn6);
busb7 = findViewById(R.id.busbtn7);
busb8 = findViewById(R.id.bustbtn8);
busb9 = findViewById(R.id.busbtn9);
busb10 = findViewById(R.id.busbtn10);
busb11 = findViewById(R.id.busbtn11);
busb12 = findViewById(R.id.busbtn12);
busb13 = findViewById(R.id.busbtn13);
busb14 = findViewById(R.id.busbtn14);
busb15 = findViewById(R.id.bustbtn15);
busb16 = findViewById(R.id.busbtn16);
busb1.setOnClickListener(this);
busb2.setOnClickListener(this);
busb3.setOnClickListener(this);
busb4.setOnClickListener(this);
busb5.setOnClickListener(this);
busb6.setOnClickListener(this);
busb7.setOnClickListener(this);
busb8.setOnClickListener(this);
busb9.setOnClickListener(this);
busb10.setOnClickListener(this);
busb11.setOnClickListener(this);
busb12.setOnClickListener(this);
busb13.setOnClickListener(this);
busb14.setOnClickListener(this);
busb15.setOnClickListener(this);
busb16.setOnClickListener(this);
getLocationBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//startService(new Intent(this, MyService.class));
Intent intent = new Intent(MainActivity.this, MapsActivity.class);
Bundle bundle = new Bundle();
bundle.putString("message", someVariable);
intent.putExtras(bundle);
startActivity(intent);
}
});
btnSignOut.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mAuth.signOut();
//startService(new Intent(this, MyService.class));
Intent intent = new Intent(MainActivity.this, Login.class);
startActivity(intent);
}
});
/**
Intent intent = new Intent(MainActivity.this, MapsActivity.class);
intent.putExtra("Ref", someVariable);
startActivity(intent);
*/
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.busbtn1:
someVariable ="BUS1";
numberbs.setText("Selected: BUS 1");
mDatabaseReference = mDatabase.getReference().child("Locations").child("BUS1");
break;
case R.id.busbtn2:
numberbs.setText("Selected: BUS 2");
someVariable ="BUS2";
mDatabaseReference = mDatabase.getReference().child("Locations").child("BUS2");
break;
case R.id.busbtn3:
numberbs.setText("Selected: BUS 3");
someVariable ="BUS3";
mDatabaseReference = mDatabase.getReference().child("Locations").child("BUS3");
break;
case R.id.busbtn4:
numberbs.setText("Selected: BUS 4");
someVariable ="BUS4";
mDatabaseReference = mDatabase.getReference().child("Locations").child("BUS4");
break;
case R.id.busbtn5:
numberbs.setText("Selected: BUS 5");
someVariable ="BUS5";
mDatabaseReference = mDatabase.getReference().child("Locations").child("BUS5");
break;
case R.id.busbtn6:
numberbs.setText("Selected: BUS 6");
someVariable ="BUS6";
mDatabaseReference = mDatabase.getReference().child("Locations").child("BUS6");
break;
case R.id.busbtn7:
numberbs.setText("Selected: BUS 7");
someVariable ="BUS7";
mDatabaseReference = mDatabase.getReference().child("Locations").child("BUS7");
break;
case R.id.bustbtn8:
numberbs.setText("Selected: BUS 8");
someVariable ="BUS8";
mDatabaseReference = mDatabase.getReference().child("Locations").child("BUS8");
break;
case R.id.busbtn9:
numberbs.setText("Selected: BUS 9");
someVariable ="BUS9";
mDatabaseReference = mDatabase.getReference().child("Locations").child("BUS9");
break;
case R.id.busbtn10:
numberbs.setText("Selected: BUS 10");
someVariable ="BUS10";
mDatabaseReference = mDatabase.getReference().child("Locations").child("BUS10");
break;
case R.id.busbtn11:
numberbs.setText("Selected: BUS 11");
someVariable ="BUS11";
mDatabaseReference = mDatabase.getReference().child("Locations").child("BUS11");
break;
case R.id.busbtn12:
numberbs.setText("Selected: BUS 12");
someVariable ="BUS12";
mDatabaseReference = mDatabase.getReference().child("Locations").child("BUS12");
break;
case R.id.busbtn13:
numberbs.setText("Selected: BUS 13");
someVariable ="BUS13";
mDatabaseReference = mDatabase.getReference().child("Locations").child("BUS13");
break;
case R.id.busbtn14:
someVariable ="BUS14";
numberbs.setText("Selected: BUS 14");
mDatabaseReference = mDatabase.getReference().child("Locations").child("BUS14");
break;
case R.id.bustbtn15:
numberbs.setText("Selected: BUS 15");
someVariable ="BUS15";
mDatabaseReference = mDatabase.getReference().child("Locations").child("BUS15");
break;
case R.id.busbtn16:
numberbs.setText("Selected: BUS 16");
someVariable ="BUS16";
mDatabaseReference = mDatabase.getReference().child("Locations").child("BUS16");
break;
}
}
}
map Activity
import androidx.fragment.app.FragmentActivity;
import android.content.Intent;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.util.Log;
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.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import com.google.firebase.auth.FirebaseAuth;
import com.google.android.gms.maps.model.BitmapDescriptor;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.google.firebase.database.annotations.NotNull;
public class MapsActivity extends FragmentActivity implements OnMapReadyCallback, View.OnClickListener {
private GoogleMap mMap;
private FirebaseAuth mAuth;
//String value_latitude = "0";
// String value_longitue = "0";
Double longi = 0.0;
Double lati = 0.0;
// String message = "BUS1";
Button Refreshh;
Double latitude = 0.0;
Double longitude = 0.0;
String vali;
Button Backp;
TextView BusNO;
private CountDownTimer timer;
private FirebaseDatabase mDatabase = FirebaseDatabase.getInstance();
private DatabaseReference myRef = mDatabase.getReference();
// private DatabaseReference mDatabaseReference = mDatabase.getReference();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Toast.makeText(getApplicationContext(),"Loading... Please Wait", Toast.LENGTH_LONG).show();
setContentView(R.layout.activity_maps);
Backp = findViewById(R.id.backbuttonmap);
BusNO = findViewById(R.id.busnotext);
Intent intent = getIntent();
Bundle bundle = intent.getExtras();
String str = bundle.getString("message");
vali = str;
// Obtain the SupportMapFragment and get notified when the map is ready to be used.
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
BusNO.setText(vali);
timer = new CountDownTimer(10000, 8000) {
@Override
public void onTick(long millisUntilFinished) {
}
@Override
public void onFinish() {
try {
timer.start();
Toast.makeText(MapsActivity.this, "Refreshing...", Toast.LENGTH_LONG).show();
getBussGeo();
} catch (Exception e) {
Log.e("Error", "Error: " + e.toString());
}
}
}.start();
Backp.setOnClickListener(this);
Backp.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MapsActivity.this, MainActivity.class);
timer.cancel();
startActivity(intent);
}
});
}
/**
* Manipulates the map once available.
* This callback is triggered when the map is ready to be used.
* This is where we can add markers or lines, add listeners or move the camera. In this case,
* we just add a marker near Sydney, Australia.
* If Google Play services is not installed on the device, the user will be prompted to install
* it inside the SupportMapFragment. This method will only be triggered once the user has
* installed Google Play services and returned to the app.
*/
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
/*
if (mMap != null) {
LatLng sydney = new LatLng(lati, longi);
mMap.addMarker(new MarkerOptions().position(sydney).title(vali));
mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));
}
*/
}
public void getBussGeo() {
myRef = mDatabase.getReference().child("Locations").child(vali);
myRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NotNull DataSnapshot dataSnapshot) {
for (DataSnapshot ds : dataSnapshot.getChildren()) {
double latitude = dataSnapshot.child("latitude").getValue(Double.class);
double longitude = dataSnapshot.child("longitude").getValue(Double.class);
Log.e("Long", "onDataChange: " + longitude);
Log.d("lato","onDataChange" + latitude);
lati = latitude;
longi = longitude;
if (lati == 0||longi == 0){
Toast.makeText(MapsActivity.this, "BUS NOT ACTIVE!", Toast.LENGTH_SHORT).show();
}else {
if (mMap != null) {
LatLng sydney = new LatLng(lati, longi);
mMap.addMarker(new MarkerOptions().position(sydney).title(vali));
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(sydney, 17));
}
}
}
}
@Override
public void onCancelled(@NotNull DatabaseError error) {
// Failed to read value
Toast.makeText(getApplicationContext(), "Error!!", Toast.LENGTH_SHORT).show();
}
});
}
@Override
protected void onStart() {
super.onStart();
// The Application has been opened!
}
@Override
protected void onStop() {
super.onStop();
// The Application has been closed!
timer.cancel();
}
@Override
public void onClick(View view) {
}
}
我认为这是原因,如果是的话我该如何解决它?
Google Maps API Key issue它显示 api 为(调试),这会影响发布版本吗?如果我在哪里输入发布版本的 API key ?
map Activity XML XML issue?
最佳答案
您将 google_map_api.xml
文件放置在 app\src\debug\res
文件夹中。将其移动到 app\src\main\res
文件夹。
如果不能解决问题,您可能没有在 Google map 控制台上添加发布 key 哈希。
关于java - 从 Play 商店下载后,Google map 无法使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58568366/
当我尝试通过我的 .exe 文件从 url 下载 .pdf 文件时出现以下错误。 The server committed a protocol violation. Section=Response
我是一家非营利组织的 G Suite 管理员,刚刚发现数据导出功能,这似乎是个人帐户的外卖。 导出文件已准备好,现在可以从 Google Cloud Platform Storage 中的存储桶下载。
导航 引言 总体思路 七牛云相关的配置文件 获取七牛云上传token 相关类定义 核心代码实现 获取七牛云图片下载链接 公开空
这不是后端编程问题。我只能修改标记或脚本(或文档本身)。我在这里问的原因是因为我对适当术语的所有搜索都不可避免地导致有关编程此功能的问题和解决方案。我不是试图通过编程来强制它;我必须找出此 PDF 行
您好,我已在 Google AdSense 中注册,我想使用适用于 iOS 的 SDK,但目前我找不到 SDK 下载链接。 我的申请已获批准。 任何人都知道如何下载这个sdk。 我使用这个链接来描述如
我需要为当前在 SourceForge 上的 github 项目提供二进制文件和文档。在那里,我可以为我需要的下载提供一个目录结构,因为我必须为大约 10 个不同的操作系统提供几个版本。 github
我从 Canvas 下载绘图时遇到问题。这是我的代码: function downloadCanvas(link, canvasId, filename) { link.href =
ASP.NET 项目 我将使用 Azure 进行存储。问题(要求): 在我的项目中,我让注册用户下载文件。但我不希望用户将此下载链接分享给未注册的人(例如:我给注册用户的下载链接只能在他们的计算机上下
我编写了一个servlet,用于检查http header ,但我不知道为什么当页面加载时,它会自动开始下载。 /* * To change this template, choose To
我正在尝试将下载添加到我的网络浏览器,但遇到的问题是获取您尝试下载的文件的名称。这是我的下载代码: engine.locationProperty().addListener(new ChangeLi
我正在尝试下载网站的 html: String encoding = "UTF-8"; HttpContext localContext = new BasicHttpContext();
我制作了一个带有“开始下载”按钮的框架,用于从网站下载 JAR。 问题是每当我点击开始下载按钮时,整个框架就会卡住,直到下载完成,然后就正常了。 我该如何解决这个问题? 这是单击按钮时执行的代码 p
我得到这段代码来实现一些东西,它可以帮助我从给定的 URL 下载文件。 -(void)URLSession:(NSURLSession *)session downloadTask:(NSURLSes
我正在尝试创建一个 Controller 来使用流方法下载和上传文件,在我的例子中,所有文件都作为 Blob 保存在数据库中。我阅读了 Jboss Netty 的文档,但我认为这不是我的最佳解决方案。
下载并保存文件 let destination: DownloadRequest.DownloadFileDestination = { _, _ in // var fileURL = sel
使用 htaccess 我基本上试图禁止访问该页面,即 http://example.com , 但它仍然允许人们下载文件,如果他们有直接链接即 http://example.com/hi.zip .
我正在寻求将脚本与我的控制面板集成,并且由于我是新手脚本编写者而遇到问题。我想做的是用 1 个脚本下载一个文件并解压它。 示例: wget http://example.com/example.tar
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 7 年前。
这个问题在这里已经有了答案: Top techniques to avoid 'data scraping' from a website database (14 个答案) 关闭 5 年前。 我有
这个问题在这里已经有了答案: Reading and parsing email from Gmail using C#, C++ or Python (6 个答案) 关闭 7 年前。 我只是想,是
我是一名优秀的程序员,十分优秀!