throbber
f TREME
`
`Eee tee
`
`Petitioner Apple Inc. - Ex. 1053, p. Cover
`
`CSURUCACORALS anne4 a
`Build an interactive vacation map and include your photos MPanri Wr
`BEANN Ne UB: Build a spacestation tracker
`
`Petitioner Apple Inc. - Ex. 1053, p. Cover
`
`

`

`Hacking Google® Maps
`and Google® Earth
`
`Martin C. Brown
`
`Petitioner Apple Inc. - Ex. 1053, p. Cover-1
`
`

`

`Hacking Google® Maps
`and Google® Earth
`
`Petitioner Apple Inc. - Ex. 1053, p. Cover-2
`
`

`

`Petitioner Apple Inc. - Ex. 1053, p. Cover-3
`
`Petitioner Apple Inc. - Ex. 1053, p. Cover-3
`
`

`

`Hacking Google® Maps
`and Google® Earth
`
`Martin C. Brown
`
`Petitioner Apple Inc. - Ex. 1053, p. Cover-4
`
`

`

`Hacking Google® Maps and Google® Earth
`
`Published by
`Wiley Publishing, Inc.
`10475 Crosspoint Boulevard
`Indianapolis, IN 46256
`www.wiley.com
`Copyright ©
`Published simultaneously in Canada
`
`2006 by Wiley Publishing, Inc., Indianapolis, Indiana
`
`ISBN-13: 978-0-471-79009-9
`ISBN-10: 0-471-79009-5
`
`Manufactured in the United States of America
`
`10 9 8 7 6 5 4 3 2 1
`
`1B/QV/QX/QW/IN
`
`No part of this publication may be reproduced, stored in a retrieval system or transmitted in any form or by any means, electronic,
`mechanical, photocopying, recording, scanning or otherwise, except as permitted under Sections 107 or 108 of the 1976 United States
`Copyright Act, without either the prior written permission of the Publisher, or authorization through payment of the appropriate per-copy
`fee to the Copyright Clearance Center, 222 Rosewood Drive, Danvers, MA 01923, (978) 750-8400, fax (978) 646-8600. Requests to the
`Publisher for permission should be addressed to the Legal Department, Wiley Publishing, Inc., 10475 Crosspoint Blvd., Indianapolis, IN
`46256, (317) 572-3447, fax (317) 572-4355, or online at http://www.wiley.com/go/permissions.
`
`LIMIT OF LIABILITY/DISCLAIMER OF WARRANTY: THE PUBLISHER AND THE AUTHOR MAKE NO
`REPRESENTATIONS OR WARRANTIES WITH RESPECT TO THE ACCURACY OR COMPLETENESS OF THE
`CONTENTS OF THIS WORK AND SPECIFICALLY DISCLAIM ALL WARRANTIES, INCLUDING WITHOUT
`LIMITATION WARRANTIES OF FITNESS FOR A PARTICULAR PURPOSE. NO WARRANTY MAY BE CREATED OR
`EXTENDED BY SALES OR PROMOTIONAL MATERIALS. THE ADVICE AND STRATEGIES CONTAINED HEREIN
`MAY NOT BE SUITABLE FOR EVERY SITUATION. THIS WORK IS SOLD WITH THE UNDERSTANDING THAT THE
`PUBLISHER IS NOT ENGAGED IN RENDERING LEGAL, ACCOUNTING, OR OTHER PROFESSIONAL SERVICES. IF
`PROFESSIONAL ASSISTANCE IS REQUIRED, THE SERVICES OF A COMPETENT PROFESSIONAL PERSON
`SHOULD BE SOUGHT. NEITHER THE PUBLISHER NOR THE AUTHOR SHALL BE LIABLE FOR DAMAGES
`ARISING HEREFROM. THE FACT THAT AN ORGANIZATION OR WEBSITE IS REFERRED TO IN THIS WORK AS A
`CITATION AND/OR A POTENTIAL SOURCE OF FURTHER INFORMATION DOES NOT MEAN THAT THE
`AUTHOR OR THE PUBLISHER ENDORSES THE INFORMATION THE ORGANIZATION OR WEBSITE MAY
`PROVIDE OR RECOMMENDATIONS IT MAY MAKE. FURTHER, READERS SHOULD BE AWARE THAT INTERNET
`WEBSITES LISTED IN THIS WORK MAY HAVE CHANGED OR DISAPPEARED BETWEEN WHEN THIS WORK
`WAS WRITTEN AND WHEN IT IS READ.
`
`For general information on our other products and services or to obtain technical support, please contact our Customer Care Department
`within the U.S. at (800) 762-2974, outside the U.S. at (317) 572-3993 or fax (317) 572-4002.
`
`Library of Congress Cataloging-in-Publication Data
`Brown, Martin C.
`Hacking Google Maps and Google Earth / Martin C. Brown.
`p. cm.
`Includes index.
`ISBN-13: 978-0-471-79009-9 (paper/website)
`ISBN-10: 0-471-79009-5 (paper/website)
`1. Geographic information systems. 2. Google Maps. 3. Google Earth. I. Title.
`G70.212.B765 2006
`910.285--dc22
`
`2006013971
`
`Trademarks: Wiley, the Wiley logo, and related trade dress are trademarks or registered trademarks of John Wiley & Son, Inc. and/or its
`affiliates, in the United States and other countries, and may not be used without written permission. ExtremeTech and the ExtremeTech
`logo are trademarks of Ziff Davis Publishing Holdings, Inc. Used under license. All rights reserved. Google is a registered trademark of
`Google, Inc. All other trademarks are the property of their respective owners. Wiley Publishing, Inc., is not associated with any product or
`vendor mentioned in this book.
`
`Wiley also publishes its books in a variety of electronic formats. Some content that appears in print may not be available in electronic books.
`
`Petitioner Apple Inc. - Ex. 1053, p. Cover-5
`
`

`

`To Darcy and Leon, the cats that understand everything and nothing, respectively.
`
`Petitioner Apple Inc. - Ex. 1053, p. Cover-6
`
`

`

`About the Author
`A professional writer for more than six years, Martin C. Brown (MC) is the author of both the
`Perl and Python Annotated Archives and Complete Reference books (all four Osborne/McGraw-
`Hill), Microsoft IIS 6 Delta Guide (Sams Publishing), and 14 other published computing titles.
`His expertise spans myriad development languages and platforms—Perl, Python, Java,
`JavaScript, Basic, Pascal, Modula-2, C, C++, Rebol, Gawk, Shellscript, Windows, Solaris,
`Linux, BeOS, Microsoft WP, Mac OS, and more—as well as web programming, systems
`management, and integration. MC is a regular contributor to ServerWatch.com and IBM
`developerWorks.
`He is also a regular writer of white papers and how-to guides for Microsoft on subjects such as
`migrating Solaris/Unix/Linux development and systems administration to Windows 2000 and
`2003 Server product lines. He draws on a rich and varied background as a founding member of
`a leading U.K. ISP, systems manager and IT consultant for an advertising agency and Internet
`solutions group, technical specialist for an intercontinental ISP network, and database designer
`and programmer—and as a self-confessed compulsive consumer of computing hardware and
`software. In his formative pre-writing life, he spent 10 years designing and managing mixed
`platform environments. As a result he has developed a rare talent of being able to convey the
`benefits and intricacies of his subject with equal measures of enthusiasm, professionalism, in-
`depth knowledge, and insight. MC is currently a member of the MySQL Documentation
`Team.
`
`Petitioner Apple Inc. - Ex. 1053, p. Cover-7
`
`

`

`Project Coordinator
`Ryan Steffen
`
`Graphics and Production Specialists
`Jennifer Click
`Denny Hager
`Stephanie Jumper
`
`Quality Control Technician
`John Greenough
`
`Proofreading and Indexing
`Techbooks
`
`Cover Design
`Anthony Bunyan
`
`Credits
`Executive Editor
`Chris Webb
`
`Development Editors
`Kelly Talbot
`Suzanna R. Thompson
`
`Technical Editor
`Ben Hammersley
`
`Production Editor
`Pamela Hanley
`
`Copy Editor
`Kim Cofer
`
`Editorial Manager
`Mary Beth Wakefield
`
`Production Manager
`Tim Tate
`
`Vice President and Executive Group
`Publisher
`Richard Swadley
`
`Vice President and Executive Publisher
`Joseph B. Wikert
`
`Petitioner Apple Inc. - Ex. 1053, p. Cover-8
`
`

`

`Petitioner Apple Inc. - Ex. 1053, p. Cover-9
`
`Petitioner Apple Inc. - Ex. 1053, p. Cover-9
`
`

`

`Contents at a Glance
`
`Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix
`Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxi
`
`Part I: Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
`Chapter 1: Using Geographical Information . . . . . . . . . . . . . . . . . . . . . . . . . 3
`Chapter 2: The Google Local Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
`Chapter 3: The Google Maps API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
`Chapter 4: The Google Web API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
`Chapter 5: Storing and Sharing Information . . . . . . . . . . . . . . . . . . . . . . . . 65
`
`Part II: Instant Gratification . . . . . . . . . . . . . . . . . . . . . . . . . 93
`Chapter 6: Working with Existing Address Information . . . . . . . . . . . . . . . . . . 95
`Chapter 7: Extending the Google API Examples . . . . . . . . . . . . . . . . . . . . . 103
`Chapter 8: Discovering Overlays and Mash-ups . . . . . . . . . . . . . . . . . . . . . . 133
`
`Part III: Google Maps Hacks . . . . . . . . . . . . . . . . . . . . . . . . 143
`Chapter 9: Using Overlays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
`Chapter 10: Overlaying Statistical Data . . . . . . . . . . . . . . . . . . . . . . . . . . 181
`Chapter 11: Building a Community Site . . . . . . . . . . . . . . . . . . . . . . . . . . 207
`Chapter 12: The Realtors and Archaeologists Toolkit . . . . . . . . . . . . . . . . . . . 227
`Chapter 13: I Need to Get To.... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
`Chapter 14: Merging with Flickr Photos . . . . . . . . . . . . . . . . . . . . . . . . . . 279
`
`Part IV: Google Earth Hacks. . . . . . . . . . . . . . . . . . . . . . . . . 291
`Chapter 15: Introducing Google Earth . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
`Chapter 16: Generating Google Earth Feeds . . . . . . . . . . . . . . . . . . . . . . . . 309
`Chapter 17: History and Planning with Google Earth . . . . . . . . . . . . . . . . . . . 327
`Appendix: Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
`
`Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
`
`Petitioner Apple Inc. - Ex. 1053, p. ix
`
`

`

`Petitioner Apple Inc. - Ex. 1053, p. x
`
`Petitioner Apple Inc. - Ex. 1053, p. x
`
`

`

`Contents
`
`Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix
`Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxi
`
`Part I: Basics
`
`1
`
`Chapter 1: Using Geographical Information . . . . . . . . . . . . . . . . . 3
`Understanding Your Location . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
`Mapping a Location . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
`Defining a Location . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
`Moving to Another Location . . . . . . . . . . . . . . . . . . . . . . . . . . 6
`Thinking in Terms of Geographical Location . . . . . . . . . . . . . . . . . . . . . 6
`To Find Places . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
`To Identify Photo Subjects . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
`To Understand Statistical Data. . . . . . . . . . . . . . . . . . . . . . . . . . 9
`To Generate Data from Maps
`. . . . . . . . . . . . . . . . . . . . . . . . . 10
`Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
`
`Chapter 2: The Google Local Interface . . . . . . . . . . . . . . . . . . . 13
`System Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
`Examining the Main Interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
`Interacting with the Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
`Moving the Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
`Zooming In and Out . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
`Changing the View Types. . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
`Conducting Searches
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
`Understanding Markers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
`Markers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
`Pop-ups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
`Links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
`Overlays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
`Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
`
`Chapter 3: The Google Maps API . . . . . . . . . . . . . . . . . . . . . . 35
`Using the API Key. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
`Browser Compatibility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
`Basic Components of a Google Maps Application . . . . . . . . . . . . . . . . . . 37
`XHTML (Extensible HTML) . . . . . . . . . . . . . . . . . . . . . . . . . 37
`VML (Vector Markup Language) . . . . . . . . . . . . . . . . . . . . . . . 38
`Styles and Elements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
`
`Petitioner Apple Inc. - Ex. 1053, p. xi
`
`

`

`xii
`
`Contents
`
`XML (Extensible Markup Language) . . . . . . . . . . . . . . . . . . . . . 39
`JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
`Understanding API Terminology . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
`Overlays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
`Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
`Information Windows
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
`Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
`The Google Maps Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
`GMap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
`GMarker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
`GPolyline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
`GIcon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
`GEvent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
`GXmlHttp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
`GXml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
`GXslt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
`GPoint
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
`GSize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
`GBounds . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
`Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
`
`Chapter 4: The Google Web API . . . . . . . . . . . . . . . . . . . . . . . 53
`Downloading the Google Web API . . . . . . . . . . . . . . . . . . . . . . . . . . 53
`Using the Google Web API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
`Conducting Searches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
`Comparing Language Samples . . . . . . . . . . . . . . . . . . . . . . . . . 60
`Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
`
`Chapter 5: Storing and Sharing Information. . . . . . . . . . . . . . . . . 65
`Format Types and Uses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
`Using Flat-Text Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
`Using XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
`Using an RDBMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
`Parsing and Generating Text Files. . . . . . . . . . . . . . . . . . . . . . . . . . . 67
`Reading Delimited Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
`Writing Delimited Files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
`Reading Fixed-Width Files . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
`Writing Fixed-Width Files . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
`Updating Text Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
`Generating and Parsing XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
`Generating XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
`Parsing XML with Perl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
`Parsing XML with JavaScript. . . . . . . . . . . . . . . . . . . . . . . . . . 79
`Working with SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
`Creating a Database Structure . . . . . . . . . . . . . . . . . . . . . . . . . 83
`Interfacing to the Database . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
`Populating the Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
`Extracting Data from the Database . . . . . . . . . . . . . . . . . . . . . . . 89
`Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
`
`Petitioner Apple Inc. - Ex. 1053, p. xii
`
`

`

`Contents
`
`xiii
`
`Part II: Instant Gratification
`
`93
`
`Chapter 6: Working with Existing Address Information . . . . . . . . . . 95
`Looking Up Geocode Information . . . . . . . . . . . . . . . . . . . . . . . . . . 95
`Looking Up U.S. Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
`Looking Up Global Information . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
`Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
`
`Chapter 7: Extending the Google API Examples . . . . . . . . . . . . . . 103
`Installing a Simple Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
`Adding Controls to the Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
`Moving about a Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
`Adding Overlays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
`Adding a Single Marker . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
`Adding Multiple Markers . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
`Adding Lines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
`Opening an Info Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
`Event Listeners . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
`Monitoring Movement . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
`Adding Markers to Multiple Maps . . . . . . . . . . . . . . . . . . . . . . 125
`Monitoring Location . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
`Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
`
`Chapter 8: Discovering Overlays and Mash-ups . . . . . . . . . . . . . 133
`Traffic Solutions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
`Toronto Transit Commission (TTC) Map . . . . . . . . . . . . . . . . . . 133
`Toronto Traffic Cameras. . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
`U.K. Speed Cameras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
`Trackers and Locators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
`Hurricanes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
`Satellites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
`Blackbirds . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
`Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
`
`Part III: Google Maps Hacks
`
`143
`
`Chapter 9: Using Overlays . . . . . . . . . . . . . . . . . . . . . . . . . 145
`Building in Multiple Points . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
`Extending the Source HTML. . . . . . . . . . . . . . . . . . . . . . . . . 145
`Making the Generation Dynamic with a Script. . . . . . . . . . . . . . . . 148
`Pulling the Data from a Database . . . . . . . . . . . . . . . . . . . . . . . . . . 157
`Creating a Suitable Database Structure . . . . . . . . . . . . . . . . . . . . 157
`Generating XML from that Information . . . . . . . . . . . . . . . . . . . 159
`Extending the Information Pane . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
`Formatting Information Panes. . . . . . . . . . . . . . . . . . . . . . . . . 161
`Creating More Detailed Windows from XML and XSLT . . . . . . . . . . 163
`
`Petitioner Apple Inc. - Ex. 1053, p. xiii
`
`

`

`xiv
`
`Contents
`
`Making Your Example Truly Dynamic. . . . . . . . . . . . . . . . . . . . . . . . 167
`Dividing the Application into Components. . . . . . . . . . . . . . . . . . 168
`The JavaScript Component . . . . . . . . . . . . . . . . . . . . . . . . . . 169
`Generating the XML on the Backend. . . . . . . . . . . . . . . . . . . . . 174
`Using the New Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
`Extending the Content
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
`Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
`
`Chapter 10: Overlaying Statistical Data . . . . . . . . . . . . . . . . . . 181
`Generating/Obtaining Statistical Information . . . . . . . . . . . . . . . . . . . . 181
`The U.S. Census Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
`Converting the Source Data to XML . . . . . . . . . . . . . . . . . . . . . 182
`Using Polylines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
`Basic Point Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
`Building an Internal Data Representation. . . . . . . . . . . . . . . . . . . 188
`Adding a Bar Graph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
`Adding a Circle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
`Plotting Multiple Data Sets . . . . . . . . . . . . . . . . . . . . . . . . . . 194
`Using Custom Icons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
`Building Your Own Icon . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
`Putting the Icon on a Map . . . . . . . . . . . . . . . . . . . . . . . . . . 202
`Using Icon Size to Represent Data . . . . . . . . . . . . . . . . . . . . . . 203
`Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
`
`Chapter 11: Building a Community Site . . . . . . . . . . . . . . . . . . 207
`Displaying Highlighted Points . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
`Adding More Data to the Output . . . . . . . . . . . . . . . . . . . . . . . . . . 208
`Storing and Creating the Data . . . . . . . . . . . . . . . . . . . . . . . . 209
`Backend Database Interface . . . . . . . . . . . . . . . . . . . . . . . . . . 211
`Using Custom Icons to Highlight Different Attractions
`. . . . . . . . . . . . . . 213
`Filtering Data through Layers of Information . . . . . . . . . . . . . . . . . . . . 215
`HTML Preamble . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
`Global Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
`Entity Object
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
`Initial Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
`Loading a List of Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
`Moving the Map. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
`Removing Existing Markers . . . . . . . . . . . . . . . . . . . . . . . . . . 218
`Adding Markers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
`Loading Markers for a Type . . . . . . . . . . . . . . . . . . . . . . . . . . 219
`Recentering the Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
`Closing HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
`Final Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
`Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
`
`Petitioner Apple Inc. - Ex. 1053, p. xiv
`
`

`

`Contents
`
`xv
`
`Chapter 12: The Realtors and Archaeologists Toolkit . . . . . . . . . . . 227
`Alternative Markers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
`The TLabel Extension. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
`Building a TLabel Application . . . . . . . . . . . . . . . . . . . . . . . . 232
`Overlaying Images and Drawings . . . . . . . . . . . . . . . . . . . . . . . . . . 239
`The TPhoto Extension . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
`Using TPhoto Overlays . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
`Identifying Elements from Click Locations . . . . . . . . . . . . . . . . . . . . . 244
`Creating a Unique Map Object . . . . . . . . . . . . . . . . . . . . . . . . 244
`Registering the Objects on the Map. . . . . . . . . . . . . . . . . . . . . . 245
`Identifying the Click Location . . . . . . . . . . . . . . . . . . . . . . . . 246
`Resetting the Map Location. . . . . . . . . . . . . . . . . . . . . . . . . . 246
`Resetting the Object Opacity . . . . . . . . . . . . . . . . . . . . . . . . . 247
`Final Overlay Application . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
`Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
`
`Chapter 13: I Need to Get To... . . . . . . . . . . . . . . . . . . . . . . . 251
`Front-End Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
`HTML Wrapper
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
`Global Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
`Enabling the Route Recording Process . . . . . . . . . . . . . . . . . . . . 254
`Disabling the Route Recording Process . . . . . . . . . . . . . . . . . . . . 255
`Clearing the Last Point . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
`Clearing the Current Route . . . . . . . . . . . . . . . . . . . . . . . . . . 256
`Initializing a New Route. . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
`Deleting a Route. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
`Saving a Route . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
`Loading a List of Routes . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
`Loading a Single Route . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
`Adding Markers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
`Initializing the Application . . . . . . . . . . . . . . . . . . . . . . . . . . 264
`Recentering and Zooming the Map . . . . . . . . . . . . . . . . . . . . . . 265
`Backend Database Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
`Database Structure. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
`Basic Wrapper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
`Message Response . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
`Listing Existing Routes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
`Saving a Route . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
`Deleting an Existing Route . . . . . . . . . . . . . . . . . . . . . . . . . . 269
`Obtaining a Single Route . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
`Calculating Distance. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
`Using the Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
`Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
`
`Petitioner Apple Inc. - Ex. 1053, p. xv
`
`

`

`xvi
`
`Contents
`
`Chapter 14: Merging with Flickr Photos . . . . . . . . . . . . . . . . . . 279
`Flickr and the Flickr API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
`The Flickr API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
`Getting a Flickr API Key . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
`Adding Geographic Data to Your Flickr Photos . . . . . . . . . . . . . . . 280
`Adding Flickr Photos to a Google Map . . . . . . . . . . . . . . . . . . . . . . . 281
`A Flickr Proxy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
`Searching Flickr for Photos . . . . . . . . . . . . . . . . . . . . . . . . . . 282
`Getting Individual Photo Data . . . . . . . . . . . . . . . . . . . . . . . . 284
`Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
`
`Part IV: Google Earth Hacks
`
`291
`
`Chapter 15: Introducing Google Earth . . . . . . . . . . . . . . . . . . . 293
`Google Earth Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
`Obtaining the Application. . . . . . . . . . . . . . . . . . . . . . . . . . . 294
`Google Earth Features. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
`Extending Google Earth Information . . . . . . . . . . . . . . . . . . . . . . . . 304
`Exporting Your Tags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
`Basic KML Principles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
`Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
`
`Chapter 16: Generating Google Earth Feeds. . . . . . . . . . . . . . . . 309
`Showing Points . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
`Generating KML from Existing Data. . . . . . . . . . . . . . . . . . . . . 310
`Generating KML Dynamically . . . . . . . . . . . . . . . . . . . . . . . . 315
`Adding Icons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
`Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
`
`Chapter 17: History and Planning with Google Earth . . . . . . . . . . . 327
`Location Photos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
`Using a Photo for a Placemark . . . . . . . . . . . . . . . . . . . . . . . . 327
`Scaling the Icon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
`Setting a View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
`Adding Detail to a Placemark . . . . . . . . . . . . . . . . . . . . . . . . . 331
`Final KML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331
`Generating the Information in Google Earth . . . . . . . . . . . . . . . . . 334
`Generating a KMZ File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336
`Revisiting the Realtor’s Toolkit. . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
`Using an Overlay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
`Creating a 3D Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339
`Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
`
`Petitioner Apple Inc. - Ex. 1053, p. xvi
`
`

`

`Contents
`
`xvii
`
`Appendix: Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
`Google Resources. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
`Google Maps API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
`Google Maps API Documentation . . . . . . . . . . . . . . . . . . . . . . 346
`Google Maps API Help . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
`Google Web API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
`Google Maps Groups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
`Information Sources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
`Google Maps Mania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
`Maplandia.com . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
`Google Maps on Wikipedia . . . . . . . . . . . . . . . . . . . . . . . . . . 347
`Google Sightseeing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
`Geocoders
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
`MGeocoder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
`Geocode America . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
`Geocoder. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
`Google Maps Tools. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
`gMap it! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
`Mobile GMaps
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
`MapBuilder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
`MapKi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
`Competitors and Alternatives . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
`MapQuest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
`Virtual Earth. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
`Yahoo! Maps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
`A9 Maps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
`Multimap.com . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350
`Map24 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350
`
`Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
`
`Petitioner Apple Inc. - Ex. 1053, p. xvii
`
`

`

`Petitioner Apple Inc. - Ex. 1053, p. xvii
`
`
`
`
`
`Petitioner Apple Inc. - Ex. 1053, p. xviii
`
`

`

`Acknowledgments
`I’d like to thank

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket