Tôi gặp sự cố với EntityClickedListener
trong Bản đồ Bing. Tôi đã mã hóa nó theo ví dụ được đưa ra:Thêm trình xử lý sự kiện nhấp chuột vào Pushpin
map.setEntityClickedListener(new EntityClickedListener()
{
@Override
public void onAvailableChecked(String layerName, int entityId)
{
HashMap<String, Object> metadata = map.getLayerManager.GetMetadataByID(layerName, entityId);
Toast.makeText(Activity.this, metadata.toString(), Toast.LENGTH_LONG)
.show();
}
});
Tuy nhiên, nhấp vào Pushpin
thì không có gì. Tôi đã tạo một thông báo Toast để xem chính xác những gì trong siêu dữ liệu nhưng không có gì xảy ra. Nhìn qua con đường ứng dụng, tôi có thể nói rằng Bing sử dụng một dịch vụ dữ liệu để lấy thông tin của mình:
bsds.FindByAreaCompleted = new Handler(){
public void handleMessage(Message msg) {
if(msg.obj != null){
Record[] records = (Record[])msg.obj;
EntityLayer el = (EntityLayer)bingMapsView.getLayerManager().getLayerByName(Constants.DataLayers.Search);
double maxLat = -90, minLat = 90, maxLon = -180, minLon = 180;
for(Record r : records){
Pushpin p = new Pushpin(r.Location);
p.Title = r.DisplayName;
HashMap<String, Object> metadata = new HashMap<String, Object>();
metadata.put("record", r);
el.add(p, metadata);
}
bingMapsView.setMapView(new LocationRect(maxLat, maxLon, minLat, minLon));
el.updateLayer();
}
};
Tôi cũng thay đổi nội dung tệp JavaScript để loại bỏ một số kiểm tra có thể đã ngăn chặn các Listener
từ làm việc:
this.ShowInfobox = function(entity){
window.BingMapsInterlop.entityClicked(entity.layerName, entityId);
};
var Layer = function(name, map, dataLayer)
{
this.Name = name;
var entities = new MM.EntityCollection(),
_map = map;
this.AddEntities = function(data)
{
if(data != null)
{
var i = data.length - 1;
if (i >= 0)
{
do
{
data[i].Entity.entityId = data[i].EntityId;
data[i].Entity.layerName = name;
// Commented out
// if(data[i].title != null && data[i].title != undefined && data[i].title != '')
// {
data[i].Entity.title = data[i].title;
MM.Events.addHandler(data[i].Entity, 'click', function(e)
{
BingMapsAndroid.ShowInfobox(e.target);
});
// }
entities.push(data[i].Entity);
}
while (i--)
}
}
};
// fluff
};
Tôi đã chỉnh sửa tệp JavaScript chính xác chưa? Tôi không biết JavaScript bản thân mình và tôi đã theo dõi this guide. Các Pushpin
đang được thêm vào và tôi đang nhìn thấy trên BingMapsView
của tôi, nhưng phương pháp OnClick
không thực thi. Có cái gì tôi đang mất tích?
Đường dẫn mà Bing cần để tạo Người nghe và sự kiện cho Pushpin
sự kiện nhấp gần như là một mê cung theo ý kiến của tôi. Có phải là một cách đơn giản hơn để làm điều này mà tôi đang thiếu. Bất cứ ai có thể đưa ra lời khuyên nào?
có thể là vấn đề của lớp phủ chế độ xem –
Có ai có mã hoạt động của 'EntityClickListener' cho Bản đồ Bing không? Nếu bạn chỉ có thể cho tôi một số mã, tôi có thể tự mình tìm ra nó. Tôi đã xé mái tóc của tôi ra khỏi cái này trong vài tuần qua. –
Xin chào @Yawus, bạn đã thử liên kết này chưa, http://bingmapsandroidsdk.codeplex.com/discussions/263960/ –