Android Google แผนที่ APIv2 InfoWindow และเครื่องหมาย


ฉันใช้ Google Maps APIv2 สำหรับ Android ฉันได้ติดตั้ง MapFragment ใส่เครื่องหมายในตำแหน่งที่ฉันต้องการ เพิ่ม InfoWindow ที่กำหนดเองสำหรับเครื่องหมาย

ปัญหาคือ - ฉันมี AsyncImages ใน InfoWindow และมี ProgressBar อยู่ที่นั่น ประเด็นคือ ProgressBar ไม่หมุน และรูปภาพไม่ได้ตั้งค่าหลังจากที่ฉันได้รับจากแคช AsyncImages ทำงานได้ดี ฉันทดสอบมันในคลาสอื่นแล้ว
ฉันได้แทนที่มุมมอง AsyncImages ของฉันด้วย ProgressBar เพียงอันเดียว - เหมือนเดิม มันไม่หมุน

มีข้อเสนอแนะอะไรบ้าง?

รปภ.

สปินเนอร์ไม่หมุนเพราะ

หมายเหตุ: หน้าต่างข้อมูลที่วาดไม่ใช่มุมมองสด มุมมองถูกแสดงผลเป็นรูปภาพ (โดยใช้ View.draw (Canvas)) ณ เวลาที่ส่งคืน ซึ่งหมายความว่าการเปลี่ยนแปลงใดๆ ที่เกิดขึ้นกับมุมมองในภายหลังจะไม่สะท้อนให้เห็นในหน้าต่างข้อมูลบนแผนที่ หากต้องการอัปเดตหน้าต่างข้อมูลในภายหลัง (เช่น หลังจากโหลดรูปภาพแล้ว) ให้เรียก showInfoWindow() นอกจากนี้ หน้าต่างข้อมูลจะไม่เคารพการโต้ตอบใดๆ โดยทั่วไปสำหรับมุมมองปกติ เช่น กิจกรรมการสัมผัสหรือท่าทาง อย่างไรก็ตาม คุณสามารถฟังเหตุการณ์การคลิกทั่วไปได้ในหน้าต่างข้อมูลทั้งหมดตามที่อธิบายไว้ในส่วนด้านล่าง

คำถามก็คือ - จะรับรู้ AsyncImages จากเว็บ/แคชบนแผนที่ได้อย่างไรในวิธีที่ดีที่สุด
สร้างอาร์เรย์ Views ที่ใดที่หนึ่งนอกเหนือจากวิธี getContentInfo() และยังสร้าง Listener smth เช่น OnImageDownloaded?


person Konstantin Kiriushyn    schedule 15.01.2013    source แหล่งที่มา
comment
คุณเคยแก้ไขปัญหานี้หรือไม่? ฉันมีปัญหาที่คล้ายกัน   -  person LilMoke    schedule 19.02.2013
comment
ยัง. ฉันทิ้งมันไปแล้ว โชคดีที่ฉันไม่ต้องการ AsyncImages บน Map Markers ในขณะนี้ แต่ฉันก็ยังไม่รู้ว่าจะตระหนักได้อย่างไร   -  person Konstantin Kiriushyn    schedule 21.02.2013
comment
ฉันประสบปัญหาคล้ายกัน กำลังดาวน์โหลดรูปภาพและแสดงในหน้าต่างมาร์กเกอร์ ฉันหาวิธีแก้ปัญหาไม่เจอ   -  person Barış Akkurt    schedule 28.04.2014


คำตอบ (2)


ตามที่ระบุไว้ในเอกสาร Google Maps Android API v2:

หมายเหตุ: หน้าต่างข้อมูลที่วาดไม่ใช่มุมมองสด มุมมองจะแสดงผลเป็นรูปภาพ (โดยใช้ View.draw(Canvas)) ในขณะที่ส่งคืน ซึ่งหมายความว่าการเปลี่ยนแปลงใดๆ ที่เกิดขึ้นกับมุมมองในภายหลังจะไม่สะท้อนให้เห็นในหน้าต่างข้อมูลบนแผนที่ หากต้องการอัปเดตหน้าต่างข้อมูลในภายหลัง (เช่น หลังจากโหลดรูปภาพแล้ว) ให้โทร showInfoWindow() นอกจากนี้ หน้าต่างข้อมูลจะไม่เคารพการโต้ตอบใดๆ โดยทั่วไปสำหรับมุมมองปกติ เช่น กิจกรรมการสัมผัสหรือท่าทาง อย่างไรก็ตาม คุณสามารถฟังเหตุการณ์การคลิกทั่วไปได้ในหน้าต่างข้อมูลทั้งหมดตามที่อธิบายไว้ในส่วนด้านล่าง

บางทีคุณควรลองโทร showInfoWindow() อีกครั้งในรหัสของคุณ

person Spartako    schedule 15.01.2013
comment
ขอบคุณ ฉันพลาดข้อความเล็กๆ นี้ไปโดยสิ้นเชิง แต่ปัญหายังคงอยู่ที่นี่ ฉันเดาว่าฉันควรสร้าง Views เพื่อแสดงใน InfoWindow ไม่ใช่ในวิธี getContentInfo() แต่เป็นที่อื่น และสร้างผู้ฟังอีกคนเพื่อแจ้งให้ฉันทราบว่ามีการดาวน์โหลดรูปภาพและตั้งค่าไว้ในมุมมองแล้ว ดูค่อนข้างน่ารำคาญ - person Konstantin Kiriushyn; 15.01.2013
comment
ค่อนข้างน่ารำคาญจริงๆ... แต่ดูเหมือนเป็นไปได้ โปรดโพสต์ไว้หากคุณจัดการเพื่อให้มันใช้งานได้! ฉันกำลังทำสิ่งที่คล้ายกันและสิ่งนี้อาจมีประโยชน์ - person Spartako; 15.01.2013

ฉันมีปัญหาเดียวกันที่นี่

ฉันคิดว่าการเรียก showInfoWindows() สำหรับแถบความคืบหน้าที่กำลังหมุน ( ไม่แน่นอน ) นั้นไม่สมเหตุสมผลสำหรับฉัน และฉันก็ไม่แน่ใจเหมือนกันว่ามันใช้งานได้ (แน่นอนว่า showinfoWindows อาจเหมาะสมกับแถบความคืบหน้าในแนวนอน) ดังนั้นฉันจึงเลือกหนึ่งในสามวิธีแก้ปัญหาต่อไปนี้

1) ปล่อยให้แถบความคืบหน้าไม่เคลื่อนไหวข้างข้อความ "กำลังโหลด..." อย่างน้อยก็ให้แนวคิดแก่ผู้ใช้ 2) วางล้อหมุนโหลดไว้ที่อื่นใน UI 3) การใช้ส่วนโต้ตอบเพื่อแสดงขั้นตอนการโหลด แต่จริงๆ แล้วขึ้นอยู่กับความรู้สึกที่คุณต้องการได้รับจากแอปของคุณ

ส่วนตัวผมเลือกอันแรกแล้ว

ฉันหวังเป็นอย่างยิ่งว่า Google จะแก้ไขปัญหานี้ในอนาคต

person MadBlack    schedule 04.03.2013