ebook img

Beginning Google Maps Applications with PHP and Ajax: From Novice to Professional PDF

383 Pages·2006·15.38 MB·English
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Beginning Google Maps Applications with PHP and Ajax: From Novice to Professional

CYAN YELLOW MAGENTA BLACK PANTONE 123 CV BOOKS FOR PROFESSIONALS BY PROFESSIONALS® THE EXPERT’S VOICE® IN WEB DEVELOPMENT Companion eBook Available Beginning Google Maps Applications with PHP and Ajax: CCoovveerrss AAPPII VVeerrssiioonn 22,, iinncclluuddiinngg From Novice to Professional Beginning GGooooggllee’’ss ggeeooccooddeerr!! Beginning Dear Reader, G Until recently, building interactive web-based mapping applications has been a o cumbersome affair. That changed when Google released its powerful Maps API. o Michael Purvis We’ve written this book to help you take advantage of this technology in your g Google Maps own endeavors—whether you’re an enthusiast playing for fun or a professional l e building for profit. We get rolling with examples that require hardly any code at all, but you’ll M quickly become acquainted with many facets of the Maps API. We demonstrate a powerful methods for simultaneously plotting large data sets, creating your p own map overlays, and harvesting and geocoding sets of addresses. You’ll see s Applications how to set up alternative tile sets and where to access imagery to use for them. We even show you how to build your own geocoder from scratch, for those A high-volume batch jobs. p Jeffrey Sambells,ZCE We’ve had a blast researching and writing this book, and we really think it p has turned into a great, comprehensive resource. As well as providing hands-on l examples of real mapping projects, this book supplies a complete reference for ic the API, along with the relevant aspects of JavaScript, CSS, PHP, and SQL. a PHP Ajax If you enjoy this book or you’ve built something cool related to Google t Maps, we encourage you to drop by http://googlemapsbook.com and let us io with and know. We’re keeping a blog there that’s an ongoing stream of new pointers, n ideas, and resources to help out fellow mappers. s Now, go forth and map the world! w Cameron Turner Mike Purvis, Jeffrey Sambells, and Cameron Turner it h Join online discussions: P From Novice to Professional forums.apress.com H THE APRESS ROADMAP FOR PROFESSIONALS P BY PROFESSIONALS™ Beginning PHP and MySQL 5, a Companion eBook Second Edition n Pro CSS Techniques d Build awesome web-based mapping applications with this powerful API! Beginning JavaScript A with DOM and Ajax Beginning Google Maps Application j Development with PHP and Ajax a See last page for details Beginning CSS x Web Development on $10 eBook version S Michael Purvis, Jeffrey Sambells, ISBN 1-59059-707-9 a SOURCECODEONLINE 53499 TumP www.apress.com rbu Cameron Turner ner and v elli US $34.99 rs,s, Foreword by Mike Pegg, Shelve in Founder of the Google Maps Mania Blog Web development 6 89253 59707 1 9 781590 597071 User level: Beginner–Intermediate this print for content only—size & color not accurate spine = 0.8927" 384 page count 7079ch00FM.qxd 7/27/06 3:18 PM Page i Beginning Google Maps Applications with PHP and Ajax From Novice to Professional Michael Purvis Jeffrey Sambells and Cameron Turner 7079ch00FM.qxd 7/27/06 3:18 PM Page ii Beginning Google Maps Applications with PHP and Ajax: From Novice to Professional Copyright © 2006 by Michael Purvis,Jeffrey Sambells,and Cameron Turner All rights reserved. No part of this work may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording, or by any information storage or retrieval system, without the prior written permission of the copyright owner and the publisher. ISBN-13 (pbk): 978-1-59059-707-1 ISBN-10 (pbk): 1-59059-707-9 Printed and bound in the United States of America 9 8 7 6 5 4 3 2 1 Trademarked names may appear in this book. Rather than use atrademark symbol with every occurrence of atrademarked name, we use the names only in an editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the trademark. Lead Editor: Jason Gilmore Technical Reviewer: Terrill Dent Editorial Board: Steve Anglin, Ewan Buckingham, Gary Cornell, Jason Gilmore, Jonathan Gennick, Jonathan Hassell, James Huddleston, Chris Mills, Matthew Moodie, Dominic Shakeshaft, Jim Sumser, Keir Thomas, Matt Wade Project Manager: Elizabeth Seymour Copy Edit Manager: Nicole LeClerc Copy Editor: Marilyn Smith Assistant Production Director: Kari Brooks-Copony Production Editor: Katie Stence Compositor: Kinetic Publishing Services, LLC Proofreader: Liz Welch Indexer: Beth Palmer Cover Designer: Kurt Krames Manufacturing Director: Tom Debolski Distributed to the book trade worldwide by Springer-Verlag New York, Inc., 233 Spring Street, 6th Floor, New York, NY 10013. Phone 1-800-SPRINGER, fax 201-348-4505, e-mail [email protected], or visit http://www.springeronline.com. For information on translations, please contact Apress directly at 2560 Ninth Street, Suite 219, Berkeley, CA 94710. Phone 510-549-5930, fax 510-549-5939, e-mail [email protected], or visit http://www.apress.com. The information in this book is distributed on an “as is” basis, without warranty. Although every precau- tion has been taken in the preparation of this work, neither the author(s) nor Apress shall have any liability to any person or entity with respect to any loss or damage caused or alleged to be caused directly or indirectly by the information contained in this work. The source code for this book is available to readers at http://www.apress.comin the Source Code section or at the official book site, http://googlemapsbook.com. 7079ch00FM.qxd 7/27/06 3:18 PM Page iii To Anne and Jim,that with God’s grace, Imight one day be so loving aparent. —Michael Purvis Dedicated to my loving wife,Stephanie,always by my side as my navigator in life. May we never lose our way in this crazy world. And also to my parents,Frank and Linda, who taught me to always look beyond the horizon. —Jeffrey Sambells I dedicate this book to my amazing wife,Tanya,and our son,Owen. Tanya is the ultimate teammate and life partner— always willing to dive into an adventure or opportunity regardless of the size. I’d also like to thank my parents,Barry and Lorna,for supporting me in all my ambitions and encouraging me to take risks and pursue dreams. Without all of you,Iwould never have agreed to write my first book about amoving-target topic such as Google Maps, on acompressed timeline,with anewborn baby! To everyone else who helped out in the last few months,thank you. We couldn’t have completed this book without your help and patience. —Cameron Turner 7079ch00FM.qxd 7/27/06 3:18 PM Page iv 7079ch00FM.qxd 7/27/06 3:18 PM Page v Contents at a Glance Foreword . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv About the Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix About the Technical Reviewer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxi Acknowledgments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxiii PART 1 ■ ■ ■ Your First Google Maps ■ CHAPTER 1 Introducing Google Maps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 ■ CHAPTER 2 Getting Started . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 ■ CHAPTER 3 Interacting with the User and the Server . . . . . . . . . . . . . . . . . . . . . . . 31 ■ CHAPTER 4 Geocoding Addresses. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 PART 2 ■ ■ ■ Beyond the Basics ■ CHAPTER 5 Manipulating Third-Party Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 ■ CHAPTER 6 Improving the User Interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 ■ CHAPTER 7 Optimizing and Scaling for Large Data Sets. . . . . . . . . . . . . . . . . . . . 145 ■ CHAPTER 8 What’s Next for the Google Maps API?. . . . . . . . . . . . . . . . . . . . . . . . . 199 PART 3 ■ ■ ■ Advanced Map Features and Methods ■ CHAPTER 9 Advanced Tips and Tricks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 ■ CHAPTER 10 Lines,Lengths,and Areas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261 ■ CHAPTER 11 Advanced Geocoding Topics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285 PART 4 ■ ■ ■ Appendixes ■ APPENDIX A Finding the Data You Want . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315 ■ APPENDIX B Google Maps API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323 ■ INDEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351 v 7079ch00FM.qxd 7/27/06 3:18 PM Page vi 7079ch00FM.qxd 7/27/06 3:18 PM Page vii Contents Foreword . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv About the Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix About the Technical Reviewer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxi Acknowledgments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxiii PART 1 ■ ■ ■ Your First Google Maps ■ CHAPTER 1 Introducing Google Maps. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 KML:Your First Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Wayfaring:Your Second Map. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Adding the First Point . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 Adding the Flight Route . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Adding the Destination Point. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Adding a Driving Route. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 What’s Next? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 ■ CHAPTER 2 Getting Started. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 The First Map. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Keying Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Examining the Sample Map. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Specifying a New Location. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Separating Code from Content . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 Cleaning Up. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Basic Interaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Using Map Control Widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Creating Markers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Opening Info Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 A List of Points. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Using Arrays and Objects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Iterating. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 vii 7079ch00FM.qxd 7/27/06 3:18 PM Page viii viii ■ CONTENTS ■ CHAPTER 3 Interacting with the User and the Server. . . . . . . . . . . . . . . . . . 31 Going on a Treasure Hunt. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 Creating the Map and Marking Points. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Starting the Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Listening to User Events. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Asking for More Information with an Info Window. . . . . . . . . . . . . . . . . . . . 37 Creating an Info Window on the Map. . . . . . . . . . . . . . . . . . . . . . . . . . 38 Embedding a Form into the Info Window. . . . . . . . . . . . . . . . . . . . . . . 39 Avoiding an Ambiguous State . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Controlling the Info Window Size. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Using Google’s Ajax Object. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 Saving Data with GXmlHttp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 Parsing the XML Document Using DOM Methods . . . . . . . . . . . . . . . 54 Retrieving Markers from the Server. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 Adding Some Flair. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 ■ CHAPTER 4 Geocoding Addresses. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 Creating an XML File with the Address Data. . . . . . . . . . . . . . . . . . . . . . . . . 63 Using Geocoding Web Services. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 Requirements for Consuming Geocoding Services . . . . . . . . . . . . . . 66 The Google Maps API Geocoder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 The Yahoo Geocoding API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 Geocoder.us . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 Geocoder.ca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 Services for Geocoding Addresses Outside Google’s Coverage. . . . 85 Caching Lookups. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 Building a Store Location Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 PART 2 ■ ■ ■ Beyond the Basics ■ CHAPTER 5 Manipulating Third-Party Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 Using Downloadable Text Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 Downloading the Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 Parsing CSV Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 Optimizing the Import. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 Using Your New Database Schema. . . . . . . . . . . . . . . . . . . . . . . . . . . 106 7079ch00FM.qxd 7/27/06 3:18 PM Page ix ■ CONTENTS ix Screen Scraping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 A Scraping Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 Screen Scraping Considerations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 ■ CHAPTER 6 Improving the User Interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 CSS:A Touch of Style . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 Maximizing Your Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 Adding Hovering Toolbars. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 Creating Collapsible Side Panels. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 Scripted Style. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 Switching Up the Body Classes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 Resizing with the Power of JavaScript. . . . . . . . . . . . . . . . . . . . . . . . 129 Populating the Side Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 Getting Side Panel Feedback. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 Warning,Now Loading. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 Data Point Filtering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 Showing and Hiding Points . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 Discovering Groupings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 Creating Filter Buttons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 ■ CHAPTER 7 Optimizing and Scaling for Large Data Sets . . . . . . . . . . . . . 145 Understanding the Limitations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 Streamlining Server-Client Communications . . . . . . . . . . . . . . . . . . . . . . . 146 Optimizing Server-Side Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 Server-Side Boundary Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 Server-Side Common Point Method. . . . . . . . . . . . . . . . . . . . . . . . . . 155 Server-Side Clustering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 Custom Detail Overlay Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 Custom Tile Method. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 Optimizing the Client-Side User Experience . . . . . . . . . . . . . . . . . . . . . . . 186 Client-Side Boundary Method. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 Client-Side Closest to a Common Point Method. . . . . . . . . . . . . . . . 188 Client-Side Clustering. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 Further Optimizations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198

Description:
There is much to like about this book. The explanations are straightforward, the code is readable, the examples are relevant, and the writing style is approachable. — Michael J. Ross, Web developer/Slashdot contributor Until recently, building interactive web-based mapping applications has been a
See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.