现在我知道如何创建和管理 map 了。而且我可以在我的数据库中找到信息(Retrofit 和 PHP API)。
我想在我的 map 上添加标记。为此,我请求我的数据库并在通过 Retrofit 之后,我检索了一个“标记”对象列表,这些对象目前有两个基本数据:经度和纬度。此列表是在我的 MainActivity 中创建的。
问题是我不知道如何在我管理 map 的类(class)中传递这个列表。
目前,我尝试创建一个传递值表的 Setter。问题是要生成标记,我只能在我的 OnMapReady()
中完成。但现在还为时过早。当我输入 onMapReady()
时,我的列表还没有设置...
基本上我想知道如何在 onMapReady()
之后添加标记?
我的 MainActivity.java:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.e("API_Test", "Message test");
//BDD
bddRequest githubService = new RestAdapter.Builder()
.setEndpoint(bddRequest.ENDPOINT)
.build()
.create(bddRequest.class);
githubService.listMarqueurs("API_REST",new Callback<List<Marqueur>>() {
@Override
public void success(List<Marqueur> marqueur, Response response) {
DisplayRepos(marqueur);
int i = 0;
while(i<marqueur.size())`enter code here`
{
Log.e(String.valueOf(i), String.valueOf(marqueur.get(i).getLong()));
i++;
}
MapsFragment mapInitial = new MapsFragment(marqueur);
}
@Override
public void failure(RetrofitError error) {
Log.e("API_Test","ERROR ! ");
}
});
}
public void DisplayRepos(List<Marqueur> marqueur) {
Log.e("nombre de dépots : ", String.valueOf(+marqueur.size()));
}
}
我的 MapsFragment.java:
public class MapsFragment extends Fragment implements OnMapReadyCallback
{
private List<Marqueur> tousLesMarqueurs;
public MapsFragment() { }
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
//return inflater.inflate(R.layout.fragment_maps, container, false);
final View rootView = inflater.inflate(R.layout.fragment_maps, container, false);
final SupportMapFragment mapFragment = (SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
return rootView;
}
@Override
public void onMapReady(GoogleMap googleMap)
{
googleMap.addMarker(new MarkerOptions().position(new LatLng(48.8534100, 2.3488000)).title("Paris").snippet("is beautiful !"));
/*int i = 0;
while(i<tousLesMarqueurs.size())
{
Log.e(String.valueOf(i), String.valueOf(tousLesMarqueurs.get(i).getLong()));
googleMap.addMarker(new MarkerOptions().position(new LatLng(tousLesMarqueurs.get(i).getLati(), tousLesMarqueurs.get(i).getLong())));
i++;
}*/
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState)
{
super.onViewCreated(view, savedInstanceState);
}
}
最佳答案
在您的 MapsFragment 中,创建一个属性 Map myMap
。并在 onMapReady()
中设置。
然后在您的二传手中创建标记。
public class MapsFragment extends Fragment implements OnMapReadyCallback
{
private List<Marqueur> tousLesMarqueurs;
private GoogleMap myMap;
...
@Override
public void onMapReady(GoogleMap googleMap)
{
myMap = googleMap;
}
public void setMarkers( List<Marqueur> markers){
tousLesMarqueurs = markers;
int i = 0;
while(i<tousLesMarqueurs.size())
{
myMap.addMarker(new MarkerOptions().position(new LatLng(tousLesMarqueurs.get(i).getLati(), tousLesMarqueurs.get(i).getLong())));
i++;
}
}
}
关于java - 向 map 添加标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48703106/