我可以在地图上显示所有标记,但是我想在填充所有标记时在每个标记上显示信息窗口.到目前为止我已经尝试了这个,但它显示了只有一个标记信息窗口的所有标记.
for (int i = 0; i < jobsDtoList.size(); i++) {
Double latitude = Double.parseDouble(jobsDtoList.get(i).getSiteLatitude());
Double longitude = Double.parseDouble(jobsDtoList.get(i).getSiteLongitude());
LatLng latLng = new LatLng(latitude, longitude);
MarkerOptions TP = new MarkerOptions().position(latLng).icon(BitmapDescriptorFactory.fromResource(R.mipmap.job_marker));
googleMap.addMarker(TP).showInfoWindow();
}
Run Code Online (Sandbox Code Playgroud) 我已经阅读了这样做的例子:
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK)
{
Uri imageUri = data.getData();
Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), imageUri);
}
}
Run Code Online (Sandbox Code Playgroud)
但我得到java.io.FileNotFoundException:没有内容提供者:/sdcard/Hello/1310610722879.jpg
我的代码在这里:
Uri uri1 = Uri.parse(Config.getPhotoPath(this));
try {
Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), uri1);
attachButton.setImageBitmap(bitmap);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
任何想法如何使其工作?
好吧我搞砸了,你必须这样做:
Uri uri1 = Uri.parse("file://" + Config.getPhotoPath(this));
Run Code Online (Sandbox Code Playgroud) 我想在点击时更改群集标记的背景.我通过这样做
@Override
onClusterClick(Cluster<MyObject> cluster) {
Marker marker = renderer.getMarker(cluster);
marker.setIcon(....);
}
Run Code Online (Sandbox Code Playgroud)
对于一种情况,这很好用:当我放大或缩小时,簇标记的数量不会改变.例如,如果我有一个15个集群和一个5个集群,那么放大或缩小一个级别,保留相同的两个集群.单击其中一个现在renderer.getMarker(cluster)返回null.如果它们在缩放后重新聚类,则getMarker不为null.
我的DefaultClusterRenderer在下面.我检查了标记onClusteredRendered,它永远不会为空.这是DefaultClusterRenderer中的错误还是应该执行其他操作?
private class MyRenderer extends DefaultClusterRenderer<MyObject> {
private IconGenerator iconGenerator;
private float density;
public MyRenderer(Context context, GoogleMap map, ClusterManager<MyObject> clusterManager) {
super(context, map, clusterManager);
density = context.getResources().getDisplayMetrics().density;
}
@Override
protected void onBeforeClusterItemRendered(MyObject item, MarkerOptions markerOptions) {
markerOptions.icon(BitmapDescriptorFactory.fromResource(R.drawable.my_pin));
}
@Override
protected void onBeforeClusterRendered(Cluster<MyObject> cluster, MarkerOptions markerOptions) {
if(iconGenerator == null) {
iconGenerator = new IconGenerator(getActivity());
iconGenerator.setContentView(makeTextView(getActivity()));
}
iconGenerator.setBackground(makeBackground(false));
markerOptions.icon(BitmapDescriptorFactory.fromBitmap(iconGenerator.makeIcon(String.valueOf(cluster.getSize()))));
}
@Override
protected void onClusterRendered(Cluster<MyObject> cluster, …Run Code Online (Sandbox Code Playgroud) 我有多个ActivityAliases都开始一个单一TargetActivity.在我的内心TargetActivity我尝试区分开始的别名TargetActivity.
别名定义Manifest为可启动(intent-filter),它将在主屏幕上显示为快捷方式.用户将点击快捷方式,android将启动我在" android:targetActivity=.."标签中定义的活动.
对于我目前的提取componentName从Intent,这是考虑到我的TargetActivity和使用className().
喜欢:
String aliasName = targetActivity.getComponentName().getClassName();
Run Code Online (Sandbox Code Playgroud)
这适用于许多设备.但目前我在OnePlus上看到了一些失败.在该设备上,我的技术只返回我的TargetActivity的className,因此我无法根据用户启动的别名传递操作.
有没有其他可靠的方法可以ActivityAlias用来启动TargetActivity?它不需要是名称本身,只要我能区分它们.我不想为每个Alias创建专用的TargetActivities!
谢谢!
Ps.:我看到了另一种方法,它使用PackageManager来检索activityInfo并使用Activity.name.但我怀疑这会带来与我的第一种方法不同的东西.
ActivityInfo aInfo = activity.getPackageManager().getActivityInfo(activity.getComponentName(), PackageManager.GET_META_DATA);
String aliasName = aInfo.name;
Run Code Online (Sandbox Code Playgroud)
我也尝试过元数据:
编辑:
不幸的是,这种方法并不适用于所有设备.如果alias-className从activity.component 解析后返回
target-activity,那么元数据方法也会失败.
我继续寻找答案,并找到了一个很好的解决方法来区分TargetActivty中的别名.
您可以在ActivityAlias标记内提供元数据,如下所示:
<activity-alias
android:name=".aliasName"
android:enabled="false"
android:exported="true"
android:icon="@drawable/someIconRes"
android:label="@string/someLabelRes" android:targetActivity=".yourTargetActivity">
<meta-data android:name="alias" android:value="valueToDistinguish"/>
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity-alias> …Run Code Online (Sandbox Code Playgroud) android android-manifest android-intent android-activity android-activity-alias
我正在开发一个适用于平板电脑的Android应用,该应用在master-detail-layout中显示了两个带有标记的地图。
两种地图都包含不同的标记。当我开始在其中一张地图中移动相机时,另一张地图上的标记开始跳跃/闪烁,有时甚至停留在错误的位置。
我 只需将标记添加到两个地图中,就可以重现google-maps android-samples的问题,仅此而已。闪烁实际上远比gif中可见。
为完整起见,这是整个更改后的活动:
public class MultiMapDemoActivity extends AppCompatActivity {
private static final LatLng BRISBANE = new LatLng(-27.47093, 153.0235);
private static final LatLng MELBOURNE = new LatLng(-37.81319, 144.96298);
private static final LatLng SYDNEY = new LatLng(-33.87365, 151.20689);
private static final LatLng ADELAIDE = new LatLng(-34.92873, 138.59995);
private static final LatLng PERTH = new LatLng(-31.952854, 115.857342);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.multimap_demo);
final SupportMapFragment firstMapFragment =
(SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map1);
firstMapFragment.getMapAsync(new OnMapReadyCallback() {
@Override
public void …Run Code Online (Sandbox Code Playgroud) android google-maps google-maps-markers google-maps-android-api-2
我一直试图在macbook上安装Genymotion 2.7.2.我已经通过各种教程,没有一个帮助.
我已经安装了virtualBox版本2.0.22,重新启动然后打开了Genymotion .dmg文件.从Applications文件夹打开应用程序给了我以下错误,并要求我重新打开.
我尝试过不同的方式,但没有一个工作.有没有我做错了什么?
我在 Google Cloud Spanner 中有一个 860M 行的表格,我试图了解解释的工作原理。
该表有一个字符串列geoid,该列有一个索引。
当我运行以下查询时,它只需要 36 毫秒:
SELECT count(*)
FROM usbg_2015
WHERE geoid= '340170175001'
Run Code Online (Sandbox Code Playgroud)
表结构为:
CREATE TABLE usbg_2015 (
geoid STRING(12),
quadkey STRING(24),
) PRIMARY KEY (geoid, quadkey)
Run Code Online (Sandbox Code Playgroud)
但是,我不明白为什么解释说它使用Table Scan而不是Index Scan。我将表扫描理解为对表的完整扫描,在这种情况下读取 860M 行,它应该花费超过 36 毫秒的时间。我缺少什么?
我正在开发一个应用程序,在其中onLongClick将标记放在谷歌地图上。我的问题是在应用程序关闭时保存这些标记。
我使用共享首选项来保存 lat 和 lng 的值,并在应用程序重新启动时加载这些值。但是,当我将这些值传递给一个方法来制作一个标记时,错误猫说我试图在一个空引用上调用一个方法。
任何帮助将不胜感激。请在下面找到代码。
public class SecondMaps extends AppCompatActivity implements OnMapReadyCallback, GoogleMap.OnMapLongClickListener {
private GoogleMap mMap;
EditText addressEditText;
String title;
LatLng position1;
SharedPreferences sharedPreferences;
int locationCount;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second_maps);
// 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);
// Opening the sharedPreferences object
sharedPreferences = getSharedPreferences("location", 0);
// Getting number of locations already stored
locationCount = sharedPreferences.getInt("locationCount", …Run Code Online (Sandbox Code Playgroud) 我写了这段代码,但是MyLocationListener该类不起作用。当我像“查找我”这样的短信时,代码必须给我大概的位置,但它什么也没做。这是怎么了?
public class SMSReceiver extends BroadcastReceiver {
private LocationManager lm;
private LocationListener locationlistener;
private String senderTel;
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
// get the sms
Bundle bundle = intent.getExtras();
SmsMessage[] msgs = null;
String str = "";
if (bundle != null) {
senderTel = "";
Object[] pdus = (Object[]) bundle.get("pdus");
msgs = new SmsMessage[pdus.length];
for (int i = 0; i < msgs.length; i++) {
msgs[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
if (i …Run Code Online (Sandbox Code Playgroud) 我一直在寻找在Google地图上绘制一个静态半径的圆圈,我遇到的所有答案都描述了绘制标记和圆圈,它们与lat长坐标相关联.
我需要的是:
此圆圈和标记浮动在Google地图片段上方,即:当您平移和缩放时,它会保持静态.这里是棘手的部分:我希望能够在地图中获取覆盖区域进行处理(例如:lat,中心标记的长度和圆的半径,具体取决于地图上的缩放级别).
我怎样才能做到这一点?提前致谢.
我为我的最后一年项目创建了一个距离计算器.计算器应显示用户当前位置,然后在按下时在地图上显示标记.距离将从用户当前位置显示到标记.
我检索了用户位置并存储为我在代码中使用的变量但是我被抛出了java.lang.IllegalStateException: System services not available to Activities before onCreate()错误.我已尝试从onCreate()方法开始放置我的代码,但这也不起作用.任何帮助将不胜感激.我一直在努力让它工作但没有运气.当我尝试放置(LocationManager)getSystemService(Context.LOCATION_SERVICE);在onCreate()它需要一个许可,我用尽了一切.
这是我的代码
package com.example.matthewmcnabb.moyola;
import android.Manifest;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.pm.PackageManager;
import android.graphics.Color;
import android.location.Address;
import android.location.Geocoder;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.AsyncTask;
import android.support.v4.app.ActivityCompat;
import android.support.v4.app.FragmentActivity;
import android.os.Bundle;
import android.support.v4.content.ContextCompat;
import android.view.View;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.location.LocationServices;
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.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.Marker;
import com.google.android.gms.maps.model.MarkerOptions;
import com.google.android.gms.maps.model.Polyline;
import com.google.android.gms.maps.model.PolylineOptions;
import …Run Code Online (Sandbox Code Playgroud) android ×10
google-maps ×6
bitmap ×1
genymotion ×1
java ×1
location ×1
macos ×1
marker ×1
virtualbox ×1