I haven't worked with the Bing maps webpart before, I tend to use the Google maps one more. For testing purposes check out the Google maps webpart and there are lat and long fields on there. You simply enter the column names for your page type and it will automatically place the lat and long values in place when you select the state.
For instance, your content tree looks like this:
- States
-- Minnesota
-- Wisconsin
The page, States, has your page template with the webpart assigned to it. You can set the visibility of the webpart to only show for your custom page type, this way when you navigate to a state it will automatically inherit that States template and it will only show for the individual State.
In your custom page type (or check out the "Office" page type), add a field for the zoom level (as you suggested). In your webpart set the large scale view to a default like 10. For the detail scale view, set the value to a macro like
{% YourZoomLevelColumnName %}
This will allow you to dynamically draw that value out of that field when someone navigates to the details of that State.